0

パラメータをマクロ名に保存してから、別のマクロ関数で使用したいと思います。

私はそのようなものを探しています

#define MACRO1(X) MACRO_NAME = X

#define MACRO2(Y) Y = MACRO_NAME;

1int main()
{
    int a = 2, b;

    MACRO1(a);
    ...
    MACRO2(b)

}

それは可能ですか?そしてそれを行う正しい方法は何ですか?

私が上で与えたコードは私が欲しいもののほんの一例です

4

2 に答える 2

1

プリプロセッサはテキストの置換のみを行い、コードを「実行」しません。定義されたマクロ (およびディレクティブなど) に従ってコードを変換#includeし、コンパイラに渡すだけです。

上記の例は、コンパイラが次のように表示されることを意味します。

int a = 2, b;

MACRO_NAME = a;
...
b = MACRO_NAME;

という変数がないため、これはビルドされませんMACRO_NAME。あなたの質問は少し不明確です。何をしたいのか、そしてその理由を明確にする必要があります。

于 2013-01-06T15:44:30.803 に答える
0

次のようにコードを変更する必要があると思います。MACRO_NAME を int 変数として宣言します。そのため、最初のマクロ呼び出しをインライン置換すると、「MACRO_NAME=a」のようなコードが配置され、問題なくコンパイルされます。

 #define MACRO1(X) MACRO_NAME = X
 #define MACRO2(Y) Y = MACRO_NAME;

 int main() {
    int a = 2, b;
    int MACRO_NAME;
    MACRO1(a);
    MACRO2(b)
}
于 2013-01-06T17:11:09.220 に答える