-2

文字列化コンパイラ ディレクティブを使用して整数変数を文字列化する方法があるのではないかと考えていました。私は使用してみました:

#define stringize(a) #a
#define h(a) stringize(a)
#define g(a,b) a##b
#define f(a,b) g(a,b) 

int main()
{
  int num = 1024;
  printf("%s=%s\n",stringize(h(f(1,2))), h(f(1,2)));  //1. h(f(1,2))=12
  printf("%s=%s\n",h(h(f(1,2))), h(f(1,2)));          //2. "12"=12
  printf("%s=%d\n", h(num),num);                      //num=1024
  return 0;
}

そのため、stringize マクロ (#1) に別のレベルを追加すると、最初に置換が行われ、次にコード (#2) に配置されます。同様に、コンパイル時に変数を値に置き換えることができます。if var = value; と言う意味です。それでは、 some_macro(var) --> それを「値」に文字列化できる方法はありますか?

4

2 に答える 2

4

いいえ。プリプロセッサはトークンに作用しており、変数とその値については認識していません。値が標準入力から読み取られた場合、何を取得したいですか?

于 2011-05-15T07:53:46.077 に答える
4

プリプロセッサを使用して変数の値を取得する方法はありません - 前処理 (その名前が示すように) はコンパイルの前に行われ、変数はその段階では存在しません。

于 2011-05-15T07:54:19.060 に答える