0

こんにちは、以下の簡単なマクロコードを見つけてください

#include <iostream>

#define INCL    #include

INCL <stdlib.h>

int main()
{
    std::cout << "Hello, world\n" << std::endl ;

    return 0;
}

コードをコンパイルすると、エラーがスローされます:プログラム内の迷子

助けてください。

ありがとう

4

2 に答える 2

2

プリプロセッサ マクロは、他のプリプロセッサ マクロを作成できません。この点であなたは運が悪いだけです。

ただし、インクルード引数としてマクロを使用できます。

#define FOO(x) "/usr/lib/" #x
#include FOO(mylib.h)
于 2012-04-16T10:21:04.497 に答える
0

C++ ビルドは、次の段階で構成されます。

  1. 前処理(マクロ展開)
  2. コンパイル中
  3. リンキング

ポイントは、プリプロセッサ (ステージ 1) を使用してそれ自体を前処理しようとすることですが、これは機能しません。マクロは、コンパイラのコードを生成するためにのみ使用できます。プリプロセッサ ディレクティブをプリプロセッサ マクロにラップすることはできません。

于 2012-04-16T10:20:48.697 に答える