16

私が理解していることから#define blah 8、マクロです。一方、#はプリプロセッサディレクティブです。

#include、#if、#ifdefなどと言えますか。マクロでもありますか、それとも他の何かと呼ばれていますか?それとも、マクロは#defineステートメントにのみ使用される用語ですか?

私が間違っている場合は訂正してください。

4

4 に答える 4

36

で始まる行#前処理ディレクティブです。これらは、プリプロセッサに何かを実行するように指示するディレクティブです。

#include、、、、、、、、、、、、、、およびはすべて前処理ディレクティブです。_ #if_ #ifdef_ (のみを含む行も前処理ディレクティブですが、効果はありません。)#ifndef#else#elif#endif#define#undef#line#error#pragma#

#define blah 8は前処理ディレクティブであり、マクロではありません。 blahマクロです。この#define前処理ディレクティブはblah、トークンで置き換えられたオブジェクトのようなマクロとして指定されたマクロを定義します8

于 2012-08-14T18:10:05.683 に答える
4

#include#ifなどはプリプロセッサの機能です。

#define blah 8

プリプロセッサディレクティブであり、blahという名前の新しいマクロを宣言します。

  • マクロは#defineステートメントの結果です。
  • プリプロセッサはCの機能です。
于 2012-08-14T18:12:10.013 に答える
4

プリプロセッサ:前処理(ファイルインクルード、マクロ展開、条件付きコンパイル)を実行するプログラム。

#defineマクロ:他の式に評価されるプリプロセッサディレクティブによって定義された単語。

プリプロセッサディレクティブ:プリプロセッサによって認識される特別な#キーワード。

于 2012-08-14T18:12:58.407 に答える
2

プリプロセッサは、コンパイラに渡す前にソースファイルを変更します。

プリプロセッサは、コンパイラの前に実行されるプログラムと考えてください。

プリプロセッサディレクティブは、プリプロセッサプログラムへのコマンドのようなものです。Cのいくつかの一般的なプリプロセッサディレクティブは次のとおりです。

  1. #include <header name>-指定されたファイルのテキストを現在のファイルに貼り付けるようにプリプロセッサに指示します。
  2. #if <value>-値が真であるかどうかをチェックします。真である場合は、次のコードが含まれます。#endif
  3. #define-定数の定義とマクロの作成に役立ちます

マクロはコードの断片の名前です。したがって、名前が使用されている場合は常に、プリプロセッサプログラムによってコードの断片に置き換えられます。

例えば:

#define BUFFER_SIZE 100
コードでは、BUFFER_SIZEを使用すると、100に置き換えられます。
int a=BUFFER_SIZE;
ここでは100になります。

たとえば__DATE__、 Cには多くの定義済みマクロもあります__TIME__

于 2016-04-02T12:18:15.330 に答える