Variadic宏与c ++ 11中的空参数

时间:2013-09-13 03:30:49

标签: c++ c++11 macros

我的旧标题包含一个允许0个参数的可变参数宏。当使用gcc 4.7.3针对C ++ 11编译时,##令牌似乎不再删除前面的逗号。

#define FOOCRO(...) printf("42\n", ## __VA_ARGS__)

int main(){
    FOOCRO(); // dumped from gcc -E: printf("42\n",); //comma still in place
    return 0;
}

我认为这可能是一个间距问题,但##的放置似乎对逗号删除没有任何影响。

修改

为了避免因某些被人厌恶的功能被误用而感到厌烦,这是我为此问题简化的源宏:

#define LOG(...) Logger::Write(__FILE__,__LINE__, ##__VA_ARGS__)

每次插入调试语句时,我还没有遇到一种不那么“邪恶”的调试方法,而不是编写所有这些内容。

0 个答案:

没有答案