规范中是否允许在send()中的VA_ARGS后面插入终止参数?
#define VALIST_TERMINATOR NULL
#define send(targ, ...)(compile_args(targ, __VA_ARGS__, VALIST_TERMINATOR))
void compile_args(int_t targ, ...)
{
va_list a_list;
va_start(a_list, targ);
//parse args list
va_end(a_list);
}
1条答案
按热度按时间6kkfgxo01#
我看不出标准中有任何东西阻止它。
标识符_ VA_ARGS只能出现在类似函数的宏的替换列表中,该宏在参数中使用省略号。
替换列表中出现的标识符VA_ARGS _应被视为参数,变量参数应构成用于替换它的预处理令牌。
你可以很容易地测试它自己:
https://godbolt.org/z/6aPWxaoMj