こんにちは、以下の簡単なマクロコードを見つけてください
#include <iostream>
#define INCL #include
INCL <stdlib.h>
int main()
{
std::cout << "Hello, world\n" << std::endl ;
return 0;
}
コードをコンパイルすると、エラーがスローされます:プログラム内の迷子
助けてください。
ありがとう
プリプロセッサ マクロは、他のプリプロセッサ マクロを作成できません。この点であなたは運が悪いだけです。
ただし、インクルード引数としてマクロを使用できます。
#define FOO(x) "/usr/lib/" #x
#include FOO(mylib.h)
C++ ビルドは、次の段階で構成されます。
ポイントは、プリプロセッサ (ステージ 1) を使用してそれ自体を前処理しようとすることですが、これは機能しません。マクロは、コンパイラのコードを生成するためにのみ使用できます。プリプロセッサ ディレクティブをプリプロセッサ マクロにラップすることはできません。