본문 바로가기

BackEnd/C랑 C++

(15)
Boost로 시간 값 사용해보기 Boost로 시간 값 사용해보기 개발을 하다보면, 로그라던가 HTTP 요청을 받았을 때라던가 현재 시간을 정보를 남길 때가 종종 있습니다. 저는 C언어에서는 아래와 같이 현재 시간을 남기고 있습니다 long get_current_msec(void) { long cur_msec = 0; struct timeval tv_time; gettimeofday(&tv_time, 0); cur_msec = (long)(tv_time.tv_sec*1000) + (long)(tv_time.tv_usec/1000); return cur_msec; } Boost에서는 시간을 가져오는 라이브러리가 역시 존재합니다 (물론 위 코드를 사용해서 C++ 코드에 적용해도 괜찮습니다 😊 ) Boost의 Posix Time 소개글에는 아..
Boost::program_options 사용기 오늘은 아침부터 일이 잘 되지 않는다 머리가 잘 안 돌아가서 막막한 느낌 ㅠ.,ㅜ 그래서~~ 기분 전환 용으로 글 하나 쌈박하게 올리고 다시 열일 해보겠다 이전에 작성한 boost 관련 글에도 썼다시피 나는 boost에 많은 고마움을 느낀다 +_+ 엥 이게 있다고? 하는 라이브러리가 많기 때문 이번에 시뮬레이터를 작성할 게 있어서 C로 하려다가 C++로 하려는데 세상에.. Boost에는 program options라는 기능을 제공해서 argument 기능을 참 쉽게 만들 수 있게 해 놓았다 1. 긴 서론 우리가 어떤 프로그램을 실행할 때, 옵션을 추가하여 실행을 해본 경험이 있을 것이다 argument를 프로세스 실행 파일 뒤에 추가해서 사용하곤 하는데 $ gcc --help Usage: gcc [opt..
전처리기(preprocessor)와 매크로(macro) C/C++언어를 사용하면서 define으로 상수나 문자열을 정의해본 적이 한 번쯤은 있을 것이다 #include #define MAX_SIZE 1024 #define MAIN_NAME "test main" using namespace std; int main(void) { cout
Error 해결: boost::shared_ptr<boost::asio::io_context>::operator* boost thread를 활용하여 io_context_pool을 만들어서 사용하던 중.. core가 났다 이젠 놀랍지도 않은.. 참고한 ThreadPool 예시는 아래에 첨부 링크로 올려두겠다 CMD> ./process ... /usr/include/boost/smart_ptr/shared_ptr.hpp:728: typename boost::detail::sp_derr::operator*() const [with T = boost::asio::io_context; typename boost::deta_context&]: Assertion `px != 0' failed. Aborted (core dumped) 그러다 비슷한 에러를 가진 stack overflow 글을 보았는데 내용은 이러했다 일단 원인은,..
STRUCT와 UNION을 알아보자 STUCT(구조체)와 UNION(공용체)은 데이터를 묶음으로 사용하는 자료구조다 정의 방법도 비슷하고 사용 이유도 같지만, 둘의 차이점은 메모리 적재 방식이다 메모리에 어떻게 쌓이길래 다른지와 사용 방법에 대해 간단히 정리하겠다 ** 메모리 묶음 타입 ** C - STRUCT와 UNION 제공 C++ - Class, STRUCT, UNION 제공 1. STRUCT와 UNION 사용 방법 (1) STRUCT (구조체) 사용 struct라는 단어에 생소해할 필요는 없다 int, char형 등의 데이터 형과 결국에는 같다 ㅇㅇ STRUCT의 특징 - 데이터를 다채롭게 표현할 수 있다 - 데이터형의 역할이다 - 구조체 이름 지을 때는 C 명명 규칙 사용하면 좋다 - 구조체 확장 개념 → Class (C++에서)..
C++ 스마트 포인터를 알아보자 - (2) shared_ptr 오늘은 스마트 포인터 중... 두 번째인 shared_ptr에 대해서 알아볼거다 요즘 네이버 블챌 이벤트를 하고 있는데 가운데 정렬로 하니까 사진 첨부하기가 너무 좋았어서 왼쪽정렬파였는데 바꿔 보려고 한다 ^_^ ++ 이전 글 올리고 다음 날 올릴려고 했는데 다른걸 먼저 올렸더니 잊혀질 뻔 했다 1. 스마트 포인터에는 뭐가 있지? 스마트 포인터는 3가지가 있다 1) unique_ptr 2) shared_ptr (오늘할거) 3) weak_ptr 1-1) unique_ptr이 뭐였더라 (링크 첨부 ^^) 첫 번째, unique_ptr은 포인터를 통해 Unique한 소유권을 가지고 unique_ptr 범위를 벗어날 때 해당 개체를 처리하는 스마트 포인터이다 두 번째, make_unique() 또는 new를 사..
Error 해결: undefined reference to `vtable for XXX' undefined reference to `vtable for XXX' collect2: error: ld returned 1 exit status ... 이렇게 에러가 나온다면 아마 vtable for {클래스 명} 이런 에러가 나오게 될텐데 구현하려는 클래스에 혹시 virtual 함수를 명시하고서 소스파일에서 구현을 안했는지 확인하도록 또는, 부모 클래스에서 virtual 명시해둔게 있는데 상속하다가 사용 안했는지 확인
Boost-echo tcp client & server를 살펴보자 (1) Boost는 C++을 하다보면 언젠간 반드시 꼭 사용하게될 라이브러리이다 Boost에 대한 설명은 아래에 첨부할 Boost 공식홈페이지에서 한번 읽어보는걸 추천한다 (재밌음) 처음에 boost를 사용할 때는, STL(Standard Template Library)이랑 역할이 같은 것 같은데, 왜 쓰지? 했는데 STL을 활용해서 뭔가 좀더 해야할 때, boost에는 이미 있는 기능이 많이 있었다 예제 활용해서 쓰다보면 금방 익숙해질 수 있당 서론이 길었는데, Boost 활용을 좀 더 잘해보기 위해서, 라이브러리 샘플 코드를 한번씩 공부해보려고 한다 실제 활용할 때 놓친 부분 확인도 할겸ㅋ Boost Asio에 대한 설명은 링크를 참고하길 바란다 첫 번째로 확인한 예제는 Async TCP Server와 Cl..