6

;C では、ステートメントの終わりを示すためにセミコロン ( ) が使用されます。#include行にセミコロンが必要ないのはなぜですか?

4

5 に答える 5

12

#include#(およびlikeで始まる他のすべての行#define) は、プリプロセッサの一部です。これは実際には、メイン コンパイラの前に実行される別のプログラムであり、ソースへのファイルのインクルードやマクロ展開などを行います。

于 2012-04-04T12:44:23.100 に答える
2

前処理ディレクティブはステートメントではないためです。

すべてのステートメントに final が必要なわけではありません;。例えば:

int bla = 1;

if (bla) {
}

の宣言の後、bla2 つのステートメントがあります。1 つのifステートメントと 1 つの空の複合ステートメントです。ありません;が、プログラムは有効です。

于 2012-04-04T12:49:16.840 に答える
2

ディレクティブはプリプロセッサによって処理されます。コンパイラではなく、単純なテキスト置換プロセッサです。(\n)行末を空白として扱う C コンパイラとは異なり、行末を有効な文字として使用します。\また、行末に効果がある理由も。

于 2012-04-04T12:57:12.627 に答える
2

#includeプリプロセッサによって処理され、コンパイラはこれらのステートメントを認識しません。したがって;、ステートメントの最後には必要ありません。

于 2012-04-04T12:44:30.320 に答える
1
#include "whatever.h"

ソースファイルのその行を「whatever.h」に置き換えるだけです。;そのため、「whatever.h」の最後に置く必要はありません。プリプロセッサは警告を表示し、無視します。

于 2012-04-04T12:46:53.487 に答える