タグ

ブックマーク / in-neuro.hatenablog.com (1)

  • __VA_ARGS__の引数をループするやつはなぜ動くのか - in neuro

    今更マクロの話です。求められてるのはそういうのではなくモダンな解決方法の話だということは知っているけれど、例えばreflection TSとかは紹介するには重すぎるので……。まあとりあえず今回は伝統的なテクニックの話をします。他所でも解説されている可能性は高いけれど、同じ解説というものは二つは生まれないものだろうから気にせず書こう。 可変引数マクロ C99(C++11)から可変引数マクロというのが入った。簡単にいうと任意個の引数を取れるマクロだ。#define MACRO(x, y, ...)のように定義する。 __VA_ARGS__というのはこの可変引数マクロで使うもので、展開した時の...の中身が入っている。これを使うと、以下のようなマクロが書ける。 #define DEBUG_PRINT(fmt, ...) \ printf("at line %d: " fmt, __LINE__,

    __VA_ARGS__の引数をループするやつはなぜ動くのか - in neuro
    ppp-lab
    ppp-lab 2020/11/12
  • 1