블로그
-
Google Mock으로 C++ 의존성 분리하기: MOCK_METHOD·EXPECT_CALL·매처
데이터베이스나 네트워크 없이 단위 테스트를 돌리려면 인터페이스를 분리하고 Google Mock으로 대역을 만들어야 합니다. MOCK_METHOD 정의, EXPECT_CALL의 호출 횟수·순서 검증, WillOnce와 매처, StrictMock·NiceMock 차이, 자주 나는 컴파일 에러를 다룹니다.
-
모던 C++ (C++11~C++20) 핵심 문법 치트시트 | auto·람다
C++11부터 C++20까지 버전별로 자주 쓰는 문법을 모았습니다. auto와 람다, 스마트 포인터, 구조화된 바인딩과 optional·variant, if constexpr, Concepts·Ranges·코루틴·삼원 비교 연산자를 짧은 예제로 바로 찾아볼 수 있습니다.
-
C++ LNK2019 | 'unresolved external symbol' 링커 에러 원인 5가지와 해결법
MSVC LNK2019 unresolved external symbol 오류를 선언만 있고 정의가 없는 경우, .cpp 파일 빌드 누락, 라이브러리 링크 누락, 네임스페이스 불일치, 헤더에 없는 템플릿 정의라는 다섯 가지 원인별로 재현하고 해결합니다.
-
Visual Studio C++ 빌드가 느릴 때: PCH·/MP 병렬 컴파일·증분 링크·Unity Build 설정
느린 Visual Studio C++ 빌드를 프리컴파일 헤더(PCH), /MP 병렬 컴파일, /INCREMENTAL 증분 링크, 전방 선언으로 include 줄이기, Unity Build, C++20 모듈로 단축하는 설정 방법과 각 기법의 주의사항을 설명합니다.
-
C++ 코딩 테스트 준비: 백준·프로그래머스 유형별 STL 활용과 입출력 최적화
백준과 프로그래머스에서 자주 나오는 정렬, 해시, 투 포인터, DP, BFS/DFS, 그리디, 백트래킹 문제를 C++ STL로 푸는 방법을 유형별로 정리하고, 입력 크기로 허용 복잡도를 가늠하는 법과 cin 입출력 최적화를 다룹니다.
-
C++ 신입 면접 준비: 자주 나오는 기술 질문 15개와 개인 프로젝트 설명법
신입 C++ 면접에서 자주 나오는 포인터와 참조, 메모리 누수, 가상 함수, 복사 생성자 같은 기술 질문 15개에 어떻게 답할지 예시로 보여주고, 실무 경력이 없을 때 개인 프로젝트를 이력서와 GitHub 포트폴리오로 설명하는 방법을 정리합니다.
-
C++ 멀티스레드 Asio의 딜레마 | Data Race와 Mutex의 한계 [#2]
io_context 하나를 스레드 풀에서 여러 run()으로 돌릴 때 같은 세션의 핸들러가 동시에 실행되어 data race가 생기는 구조, 핸들러 안에서 mutex를 잡으면 처리량이 떨어지는 이유, 락을 잡은 채 다른 핸들러를 기다리다 빠지는 데드락을 설명합니다.
-
C++ Move Semantics | std::move로 불필요한 복사 제거하기
큰 vector를 반환할 때의 복사 비용에서 출발해 lvalue·rvalue 구분, rvalue 참조, 이동 생성자와 이동 대입, Rule of Five를 예제로 구현합니다. return std::move가 RVO를 막는 경우, noexcept 누락, const 객체에 move를 거는 실수도 다룹니다.
-
래퍼 함수에서 인자가 복사될 때: 유니버설 참조와 std::forward로 완벽한 전달 구현하기
C++ 완벽한 전달(Perfect Forwarding) 정리. 래퍼 함수에서 인자가 복사되는 문제, 유니버설 참조, std::forward, 참조 축약 규칙, emplace 계열 함수와 성능 비교를 다룹니다.
-
C++ CMake 고급 | 멀티 타겟·외부 라이브러리 관리 (대규모 프로젝트 빌드)
라이브러리를 추가할 때마다 빌드가 깨지는 대규모 프로젝트를 타겟 단위 CMake로 정리하는 방법을 다룹니다. PUBLIC·PRIVATE·INTERFACE 전파, Generator Expression, find_package와 FetchContent 선택, undefined reference 해결도 설명합니다.