0
config.h에 정의 된 전 처리기 구성 옵션이 있습니다. 그래서처럼 그들을 사용#if로 무엇을 할 수 있습니까?
#define CONFIG_OPTION1 _DEBUG
#define CONFIG_OPTION2 _DEBUG || (NDEBUG && _WIN64)
...
은 위의 작동하지 않습니다
#if CONFIG_OPTION1
/* do some stuff */
#endif
config.h의는 정의가 포함되어 있습니다. 난 구성 (디버그, 릴리스 등) 및/또는 다른 정의에 따라 이러한 구성 옵션을 설정 및 해제하고 싶습니다. 그것은 또한 내가 할 경우 작동하지 않습니다이 충족되어야처럼 조건이 보이는 경우에도
#define CONFIG_OPTION1 defined(_DEBUG) || defined(NDEBUG)
은 내가 #if CONFIG_OPTION1
내부에 들어 가지 않았다. 내가 잘 작동 #if defined(_DEBUG)
쓸 때 매크로로 #if
조건으로 실패합니다. 이 문제를 어떻게 해결할 수 있습니까?
+1. http://gcc.gnu.org/onlinedocs/cpp/Defined.html에 따르면 "정의 된 연산자가 매크로 확장의 결과로 나타나는 경우 C 표준은 동작이 정의되지 않았다고 말합니다." – ruakh
@CatPlusPlus 이렇게하면'# else'처럼 어딘가에서'#define '을'0' 할 필요가 있습니까? – David
@Dave : 당신은 할 필요가 없습니다. 정의되지 않은 매크로 이름은 자동으로 0으로 해석됩니다. – ruakh