C++ で記述されたアプリケーションのソース コードがあり、次のようにコメントしたいだけです。
#ifdef 0
...
#endif
そして、私はこのエラーが発生します
エラー: マクロ名は識別子でなければなりません
なぜこうなった?
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
このエラーは、マルコのルールに従っていない場合にも発生する可能性があります
お気に入り
#define 1K 1024 // Macro rules must be identifiers error occurs
理由: マクロは数字ではなく文字で始める必要があります
への変更
#define ONE_KILOBYTE 1024 // This resolves
誤って次のように入力した場合にも、このエラーが発生する可能性があることに注意してください。
#define <stdio.h>
...それ以外の...
#include <stdio.>