오류 : 매크로 이름은 #ifdef 0을 사용하는 식별자 여야합니다.
-
06-07-2019 - |
문제
C ++로 작성된 응용 프로그램의 소스 코드가 있으며 다음을 사용하여 댓글을 달고 싶습니다.
#ifdef 0
...
#endif
그리고이 오류가 발생합니다
오류 : 매크로 이름은 식별자 여야합니다
왜 이런 일이 일어나고 있습니까?
해결책
#ifdef 지침은 확인하는 데 사용됩니다 전처리 기호가 정의 된 경우. 표준 (C11 6.4.2 Identifiers
) 식별자가 숫자로 시작해서는 안되는 의무입니다.
identifier:
identifier-nondigit
identifier identifier-nondigit
identifier digit
identifier-nondigit:
nondigit
universal-character-name
other implementation-defined characters>
nondigit: one of
_ a b c d e f g h i j k l m
n o p q r s t u v w x y z
A B C D E F G H I J K L M
N O P Q R S T U V W X Y Z
digit: one of
0 1 2 3 4 5 6 7 8 9
사전 프로세서를 사용하여 코드를 차단하는 올바른 양식은 다음과 같습니다.
#if 0
: : :
#endif
당신은 또한 사용할 수 있습니다 :
#ifdef NO_CHANCE_THAT_THIS_SYMBOL_WILL_EVER_EXIST
: : :
#endif
그러나 당신은 상징이 ~ 아니다 자신의 코드가 아닌 코드로 실수로 설정하십시오. 다시 말해, 같은 것을 사용하지 마십시오 NOTUSED
또는 DONOTCOMPILE
다른 사람들도 사용할 수 있습니다. 안전하기 위해 #if
옵션을 선호해야합니다.
다른 팁
다음을 사용하여 표현식을 평가하십시오 (상수 0은 False로 평가).
#if 0
...
#endif
Marco 규칙을 따르지 않으면이 오류가 발생할 수 있습니다.
처럼
#define 1K 1024 // Macro rules must be identifiers error occurs
이유 : 매크로는 숫자가 아닌 편지로 시작해야합니다.
로 변경
#define ONE_KILOBYTE 1024 // This resolves
#ifdef 0
...
#endif
#ifdef는 상수 또는 표현을 사용할 때 표현보다는 매크로를 기대합니다.
#if 0
...
#endif
또는
#if !defined(PP_CHECK) || defined(PP_CHECK_OTHER)
..
#endif
#ifdef가 사용되면 IT는이 오류를보고합니다
#ifdef !defined(PP_CHECK) || defined(PP_CHECK_OTHER)
..
#endif
여기서 #ifdef는 매크로 표현보다는 매크로를 기대합니다
실수로 입력하면이 오류를 누를 수도 있습니다.
#define <stdio.h>
...대신에...
#include <stdio.>
제휴하지 않습니다 StackOverflow