このブログの更新は Twitterアカウント @m_hiyama で通知されます。
Follow @m_hiyama

メールでのご連絡は hiyama{at}chimaira{dot}org まで。

はじめてのメールはスパムと判定されることがあります。最初は、信頼されているドメインから差し障りのない文面を送っていただけると、スパムと判定されにくいと思います。

参照用 記事

えっ、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言語を使ったのは、たぶん前世紀。ほぼ忘れてるし、新しい機能は知らない。