以下の内容はhttps://m-hiyama.hatenablog.com/entry/20160227/1456547986より取得しました。


えっ、Cプリプロセッサの文字列化演算子って、こんなことできたの

Cプリプロセッサのマクロ内で、仮引数にシャープ記号1個を前置すると、トークンを文字列にしてくれることは“いちおう”知ってはいました。しかし、引数として名前しか使ったことがありません*1。名前helloを文字列"hello"に直す、とかですね。

この文字列化演算子は、単なる名前じゃなくても文字列化できたんですね。へー。

/* a.c */
#include <stdio.h>

#define PRINT_EXPR(expr) \
    printf("%s = %d\n", #expr, expr)

int main()
{
    PRINT_EXPR(1 + 2);
    PRINT_EXPR(1 + 2*3);
    int x = 10;
    PRINT_EXPR(x);
    PRINT_EXPR(x*x + x + 1);
    return 0;
}


$ gcc a.c

$ ./a.exe
1 + 2 = 3
1 + 2*3 = 7
x = 10
x*x + x + 1 = 111

$

*1:最後にC言語を使ったのは、たぶん前世紀。ほぼ忘れてるし、新しい機能は知らない。




以上の内容はhttps://m-hiyama.hatenablog.com/entry/20160227/1456547986より取得しました。
このページはhttp://font.textar.tv/のウェブフォントを使用してます

不具合報告/要望等はこちらへお願いします。
モバイルやる夫Viewer Ver0.14