컴파일 옵션(정확히는 링커 옵션)은 요리할 때 필요한 '특수 도구'를 가져오는 것과 비슷합니다. 기본 도구(표준 라이브러리) 외에 특정 기능(네트워크, 수학, 스레드 등)을 쓰려면 "그 기능이 들어있는 상자를 열어줘!"라고 컴파일러에게 명시해야 하죠.자주 쓰이는 주요 옵션들을 카테고리별로 정리해 드릴게요.1. 시스템 및 핵심 기능 (System & Core)가장 기본적이면서도 자주 마주치는 옵션들입니다.옵션대상 OS용도비고-pthreadLinux멀티스레드 기능 사용 (std::thread, POSIX thread)단순 링크(-lpthread)보다 권장됨-lmLinux수학(Math) 라이브러리 (pow, sin, sqrt 등) 사용 시 필요할 때가 있음-lrtLinux실시간(Real-time) 확장 (Sh..
g++ server.cpp -o server -pthread 같은 경우처럼, 컴파일 시 -pthread 옵션을 붙이는 경우가 있습니다. pthread 옵션은 리눅스에서 멀티스레딩 프로그램을 만들 때는 선택이 아닌 필수입니다. 단순히 "라이브러리를 연결해라"라는 뜻 이상의 의미가 있는데, 크게 두 가지 역할을 수행합니다. 1. 링커(Linker)에게 "실제 엔진"을 알려줍니다C++ 표준에 std::thread가 포함되어 있긴 하지만, 리눅스 시스템 상에서 이 기능을 실제로 구현하는 것은POSIX Threads(pthread) 라이브러리입니다.-pthread를 붙이지 않으면 컴파일러는 std::thread를 어떻게 기계어로 바꿔야 할지(구현체)를 찾지 못해"undefined reference to pth..
Raspberry Pi Connect로 접속한 상태에서, C++ 개발 환경 구축 및 실시간 데이터 모니터링을 위해바로 진행할 수 있는 최적의 워크플로우입니다. 1. 개발 도구(VS Code) 설치하기브라우저 화면 내에서 직접 코딩하고 싶으시다면, 라즈베리 파이 전용 VS Code를 설치해야 합니다. 브라우저 속 터미널(Terminal)을 열고 아래 명령어를 입력하세요.sudo apt updatesudo apt install code -y설치가 완료되면 왼쪽 상단 메뉴 > Programming > Visual Studio Code가 생깁니다. 이를 실행하면 브라우저 안에서 코딩 창이 뜹니다. 2. C++ 컴파일러 및 필수 도구 확인기계공학 및 임베디드 프로젝트(모터 제어 등)를 위해 필수적인 빌드 도구..
우측값 참조(R-value Reference)는 C++의 성능을 비약적으로 끌어올린 주역입니다.이 개념을 이해하려면 먼저 L-value와 R-value의 차이부터 명확히 해야 합니다. 1. L-value vs R-value: 이름이 있는가?C++에서 모든 표현식은 이 둘 중 하나로 나뉩니다.L-value (Left value): 이름이 있고, 메모리 주소를 가지며, 표현식이 끝난 후에도 살아남는 객체입니다. (예: 변수 이름 x)R-value (Right value): 이름이 없고, 곧 사라질 임시 객체입니다. (예: 숫자 10, 연산 결과 x + y, 임시 문자열) 2. 우측값 참조 (&&)의 등장기존의 참조(&)는 L-value만 가리킬 수 있었습니다. 하지만 C++11에서 && (우측값 참조) 가 ..
1. C++의 유용한 핵심 기능템플릿 (Templates & Generic Programming)데이터 타입에 얽매이지 않고 코드를 작성할 수 있게 해줍니다. 하나의 함수나 클래스로 int, double, 심지어 사용자가 정의한 class까지 모두 대응할 수 있습니다.장점: 코드 중복을 획기적으로 줄이고, 컴파일 시점에 타입이 결정되어 성능 손실이 없습니다.타입을 매개변수화하여 하나의 코드로 다양한 자료형을 처리합니다.#include #include // T는 어떤 타입이든 될 수 있는 '틀'입니다.template T add(T a, T b) { return a + b;}int main() { std::cout (3, 7) (3.5, 2.1) ("Hello ", "World"); // 문자..
C++은 "강력한 힘에는 큰 책임이 따른다"는 격언이 가장 잘 어울리는 언어입니다.메모리를 직접 제어할 수 있는 만큼, 실수했을 때 시스템 전체에 미치는 영향도 크기 때문이죠. 초보자부터 중급자까지 반드시 기억해야 할 C++의 핵심 주의사항 5가지입니다. 1. 생 포인터(Raw Pointer) 대신 스마트 포인터 사용C++에서 가장 흔한 실수는 new로 할당한 메모리를 delete 하지 않아 발생하는 메모리 누수(Memory Leak)입니다.위험: int* ptr = new int(10); 이후 delete ptr;을 깜빡하면 메모리가 계속 점유됩니다.해결: **스마트 포인터(std::unique_ptr, std::shared_ptr)**를 사용하세요. 범위를 벗어나면 자동으로 메모리를 해제해 줍니다. ..