タグ

2017年3月1日のブックマーク (1件)

  • C言語の可変長引数マクロで擬似オーバーロード | 雑記帳

    C99で導入されたプリプロセッサマクロの可変長引数を使って、引数の個数によるオーバーロードっぽいことをするメモ。 参考: c – Overloading Macro on Number of Arguments – Stack Overflow [C言語] 可変引数マクロの作り方 – Qiita 余談 C++ Design: g++とvc++の可変引数マクロの挙動の違い 可変長引数の部分への実引数が0個というのはC言語の規格的にはナシなので、引数が0個の場合には対応しない。(幾つかのコンパイラでは引数が0個でも通るが…) GCCの場合に0個の引数を処理したい場合、GCC拡張の , ## __VA_ARGS__ みたいなやつを使うといい感じになる。 VC++で #define CHOOSE(a0,a1,...) #define hoge(...) CHOOSE(__VA_ARGS__) とい

    s_hiiragi
    s_hiiragi 2017/03/01
    関数オーバーロード