質問

学習と実証には、そのパラメーターを印刷するマクロが必要です 評価します。私はそれが非常に一般的なケースであり、FAQでさえあるかもしれませんが、実際の参照を見つけることができません。

私の現在のコードは次のとおりです。

#define PRINT(expr) (fprintf(stdout, "%s -> %d\n", __STRING(expr), (expr)))

その後:

PRINT(x & 0x01);

正常に動作しますが、特にプライベート__ネームスペースにあるため、__ストリングマクロの法的地位についてはわかりません。

だから、私の質問:

  1. このマクロを書くためのより良い方法はありますか?
  2. __stringは標準/偉大な/悪ですか?
  3. 既存の検索ツールを使用して、__stringについて見つける方法は?だから、検索エンジンは文字列を含むものを検索するだけです:-(
役に立ちましたか?

解決

RHS引数を文字列リテラルに変換する#プリプロセッサトークンを使用できます。

#include <stdlib.h>
#include <stdio.h>

#define STR(x) #x
#define PRINT(expr) (fprintf(stdout, "%s -> %d\n", STR(expr), (expr)))

int main(void)
{
    int x = 7;

    PRINT(x & 0x01);

    return EXIT_SUCCESS;
}

2)間違いなく標準ではありません。これは初めてです。上記のSTR()マクロよりもはるかに多くのことをしていないように見えるので、驚くことではありません。

3) グーグル うまくいくようです。

他のヒント

何かのようなもの

#define PRINT(expr) (fprintf(stdout, "%s -> %d\n", #expr, (expr)))

おそらくあなたが望むものです。 #はStringification演算子です。

ライセンス: CC-BY-SA帰属
所属していません StackOverflow
scroll top