式を印刷して評価するマクロ(__stringで)
-
22-08-2019 - |
質問
学習と実証には、そのパラメーターを印刷するマクロが必要です と 評価します。私はそれが非常に一般的なケースであり、FAQでさえあるかもしれませんが、実際の参照を見つけることができません。
私の現在のコードは次のとおりです。
#define PRINT(expr) (fprintf(stdout, "%s -> %d\n", __STRING(expr), (expr)))
その後:
PRINT(x & 0x01);
正常に動作しますが、特にプライベート__ネームスペースにあるため、__ストリングマクロの法的地位についてはわかりません。
だから、私の質問:
- このマクロを書くためのより良い方法はありますか?
- __stringは標準/偉大な/悪ですか?
- 既存の検索ツールを使用して、__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演算子です。
所属していません StackOverflow