내가 다음과 같은 코드의 일부를 미리 컴파일 된 헤더 예상 작동하지 않는 것처럼. 그러나 내가 바꿀 때 #ifdef to #ifndef 그리고 #define 매크로를 제거하면 코드가 실행됩니다. 아래 코드는 예상대로 작동합니다.는 #ifdef와
//#define FEATURE_A 1
void function()
{
// some code
#ifndef FEATURE_A
// code to be executed when this feature is defined
#endif
// some code
}
#ifdef와 내부의 첫 번째 경우 코드에서 왜 사람이 설명 할 수 - #endif 다음 으로 수행되지 않을 두 번째 경우에 작동? 누구나 잘못된 설정이 무엇인지 말해 줄 수 있습니까?
확실하지 않음이 문제 경우, 내가 사전에 비주얼 스튜디오 2010을
감사를 사용하고
UPDATE : 나는 깨끗하고 다시 실행, 두 번째는 작동하지 않습니다. 에디터에서 유일하게 사용 가능한 코드로 보여줍니다.
프로젝트 -> 속성 -> 구성 속성 -> c/C++ -> 전 처리기에서 매크로를 정의하면 둘 다 정상적으로 작동합니다.
당신이 어딘가에'#undef를 FEATURE_A'이없는 것이 확실 : 당신은 실제로 미리 컴파일 된 헤더 모든 작업 후
이동 그것을 가지고? – mvp
전처리 후에 코드를보고 싶다면'-E' 플래그로 컴파일하십시오. – aaronman
그렇지 않으면 아무런 의미가 없으므로이 동작을 나타내는 전체 프로그램을 게시해야합니다. –