Cの学習に関する以前の知識から、のようなプリプロセッサディレクティブはステートメントではないことがわかってい#include
ます。そのため、名前が示すように、プログラムがコンパイルされる前のプロセスであるため、最後に#define
aを追加する必要はありません。;
それ。
C ++では、新しいディレクティブが導入されますusing
が、なぜこのディレクティブはセミコロンを追加するのですか?私はそれがステートメントではないところを私が学ぶ前の指令のようだと思いましたか?
Cの学習に関する以前の知識から、のようなプリプロセッサディレクティブはステートメントではないことがわかってい#include
ます。そのため、名前が示すように、プログラムがコンパイルされる前のプロセスであるため、最後に#define
aを追加する必要はありません。;
それ。
C ++では、新しいディレクティブが導入されますusing
が、なぜこのディレクティブはセミコロンを追加するのですか?私はそれがステートメントではないところを私が学ぶ前の指令のようだと思いましたか?
using
プリプロセッサディレクティブではありません。これは、適切なコンパイラによって表示および分析されます。
;
マクロの最後にaを付けないことが多いのは、#define
マクロがプリプロセッサによって「単純な」テキスト置換として処理されるためです。例:
#define SOMETHING "abcd";
...
if (strcmp(thing, SOMETHING) == 0) { ... }
...
コンパイラは次のことを確認するため、コンパイラエラーになります。
if (strcmp(thing, "abcd";) == 0) { ... }
// ^ invalid here
using
たとえば、のように、宣言であると考えることができますtypedef
。
また、コンパイラに前処理の結果を出力するように依頼することもできますがg++ -C -E
、の効果を出力するように依頼する簡単な方法はありません。using