#define MAX_STRING 256;
意味:
前処理時にMAX_STRINGが見つかった場合は、それを。に置き換えます256;
。あなたの場合、それは方法2を作ります:
#include <stdio.h>
#include <stdlib.h>
#define MAX_STRING 256;
int main(void) {
char buffer [256;];
}
これは有効な構文ではありません。交換
#define MAX_STRING 256;
と
#define MAX_STRING 256
2つのコードの違いは、最初のメソッドで定数を宣言します256
が、2番目のコードでソースファイルでMAX_STRING
表すように定義することです。256;
#defineディレクティブは、プリプロセッサがコンパイル前にプログラムのソースコードを操作するために使用する値またはマクロを定義するために使用されます。コンパイラがソースコードに作用する前にプリプロセッサ定義が置き換えられるため、#defineによって発生したエラーを追跡するのは困難です。
構文は次のとおりです。
#define CONST_NAME VALUE
;
末尾にが付いている場合は、の一部と見なされVALUE
ます。
がどのように機能するかを正確に理解するには#define
、次のように定義してみてください。
#define FOREVER for(;;)
...
FOREVER {
/perform something forever.
}
ジョン・ハスコールによる興味深い発言:
ほとんどのコンパイラは、プリプロセッサフェーズの後に出力を確認する方法を提供します。これは、このようなデバッグの問題に役立ちます。
でそれgcc
はフラグで行うことができます-E
。