GNUCでの可変パラメーターマクロ定義

GNU Cでは、次の3つの形式の可変パラメーターマクロ定義がサポートされています。

#define debug1(format, ...) fprintf (stderr, format, __VA_ARGS__)

#define debug2(format, args...) fprintf (stderr, format, args)

#define debug3(format, ...) fprintf (stderr, format, ## __VA_ARGS__)

その中で、変数パラメータリストが空の場合、以下に示すように、3番目の定義方法を使用する必要があります。

debug1("%s:%d\n", __FILE__, __LINE__);  // ok

debug2("%s:%d\n", __FILE__, __LINE__);  // ok

debug3("%s:%d\n", __FILE__, __LINE__);  // ok

debug1("debug1\n"); // error

debug2("debug2\n"); // error

debug3("debug3\n"); // ok

 

おすすめ

転載: blog.csdn.net/choumin/article/details/115031066