C++ 5

[Wiki] Ubuntu 환경의 Eclipse CDT에서 thread 사용시 undefined references with pthread create 가 뜨는 경우 해결 방법

기본적으로 Linux 환경에서 thread를 사용하기 위해서는 pthread를 이용하게 됩니다. 그리고 C나 C++을 이용해서 thread 라이브러리를 이용하고자 할 때에는 -pthread 옵션을 줘서 컴파일을 하게 됩니다. 다만 Eclipse CDT에서 컴파일 시에 -pthread 옵션을 주고자 여러 시도를 해보았는데, 계속 오류가 나서.. 열심히 구글링하다가 찾은 방법을 공유합니다. 1. Project -> Properties 메뉴에 들어갑니다. 2. C/C++ Build -> Settings 메뉴에 들어갑니다. 3. Settings 메뉴에서 Tool Settings 탭을 누릅니다. 4. GCC c++ Linker 옵션에 보면, Libraries 옵션이 있습니다. 우측 상단에 있는 초록색 + 버튼을 ..

IT/Coding Tip 2020.02.03

[Wiki] Eclipse CDT에서 XXX could not be resolved 에러 해결 방법

Eclipse CDT로 개발을 하다 보니, C++11부터 사용할 수 있는 문법을 적용했을 때, Symbol을 Resolve 할 수 없다는 에러가 계속 발생하는 경우가 있었습니다. 이를 해결하기 위해서는 다음과 같이 작업해주시면 해결하실 수 있습니다. 1. Project -> Properties -> C/C++ General -> Preprocessor Include ... 탭을 눌러줍니다. 2. Providers 탭으로 이동하고, CDT GCC Built-in Compiler Settings 옵션을 클릭합니다. 3. 이후 Command to get compiler specs에 있는 옵션 끝에 원하는 C++ 표준을 추가해줍니다. - 제 경우에는 C++17을 사용하고 싶어서 -std=c++17 옵션을 넣어주..

IT/Coding Tip 2020.02.03

[C++] 현재 날짜와 현재 시각 출력하기

C++에서 오늘 날짜와 현재 시각을 출력하는 방법에 대해 정리해보겠습니다. 우선 C언어에서 사용하던 헤더 파일은 헤더 파일을 이용하면 똑같이 사용할 수 있습니다. 그러고 보니 헤더 파일을 그대로 사용하면 될 것 같은데, 굳이 헤더 파일을 새롭게 만든 이유가 궁금하네요. 아래 코드는 현재 날짜와 시각 정보를 출력하는 코드입니다. #include #include int main() { struct tm curr_tm; time_t curr_time = time(nullptr); localtime_r(&curr_time, &curr_tm); int curr_year = curr_tm.tm_year + 1900; int curr_month = curr_tm.tm_mon + 1; int curr_day = cur..

IT/C++ 2020.01.30

[C++] C++에서 std::thread를 어떻게 종료시킬 수 있을까?

시작하기에 앞서, 본 포스트는 "How to terminate a C++ std::thread?" 를 번역한 글임을 밝힙니다. C++11부터, C++은 스레드를 자체적으로 지원하고자 std::thread를 도입하였다. 그 이후로, C++에서 새로운 스레드를 사용하는 것은 새로운 객체를 생성하는 것만큼이나 간단해졌다. 하지만, 동작하고 있는 C++ 스레드를 동적으로 종료하는 작업은 여전히 어렵다. 특히, joined 또는 detached 상태의 스레드라면 더더욱 그러하다. 이 주제에 관해 상당히 많은 논의가 오고 갔는데, 결론은 다음의 사이트에서 찾을 수 있다. “terminate 1 thread + forcefully (target thread doesn’t cooperate) + pure C++11 =..

IT/C++ 2020.01.18

[C++] Thread 정리하기

얼마 전에 C++로 구현해야 하는 작업이 있었습니다. 구현할 때 Thread를 이용해야해서, 라이브러리를 이용했는데, 해당 내용을 정리하고자 합니다. "A thread of execution is a sequence of instructions that can be executed concurrently with other such sequences in multithreading environments, while sharing a same address space." - cplusplus.com "스레드는 우선, thread를 이용하기 위해서는 헤더를 include 해야 합니다. 아래는 cplusplus.com에서 소개하는 예제입니다. #include #include void foo() { // do..

IT/C++ 2020.01.15