2 min read

MSVC C++ 전처리만 수행하기

C++ 레딧에 테스트코드 라이브러리중에 ddoctest가 있다구 해서 한번 사용해보았다.

해당 깃 링크는 https://github.com/onqtam/doctest 이다.

예제 코드는 다음과 같다


#define DOCTEST_CONFIG_IMPLEMENT_WITH_MAIN

#include <iostream>
#include "doctest.h"

int factorial(int number) { return number <= 1 ? number : factorial(number - 1) * number; }

TEST_CASE("testing the factorial function") {
	CHECK(factorial(1) == 1);
	CHECK(factorial(2) == 2);
	CHECK(factorial(3) == 6);
	CHECK(factorial(10) == 3628800);
}

하지만 막상 TEST_CAST랑 CHECK의 구현부를 확인할려고하면….. 다음과 같은 코드를 볼수있다.

매크로의 최대의 단점중 하나인데 이는 컴파일 옵션을 주어서 어느정도 해결할수 있다.

바로 /p옵션인데 자세한것은 다음의 링크를 참조해주자. https://docs.microsoft.com/ko-kr/cpp/build/reference/p-preprocess-to-a-file?view=vs-2019

여튼 이옵션을 주고 컴파일하게되면 컴파일 바이너리위치에 .i라는 파일이 생성된걸 확인할수있다.

해당파일은 전처리만 따로 처리한 파일이다. 해당 파일을 에디터로 열어보자. 그러면 맨 아래의 이런 메세지를 확인할수 있다.