gpt4 book ai didi

c - 可变参数宏 - 省略号前的逗号?

转载 作者:太空宇宙 更新时间:2023-11-04 03:30:24 25 4
gpt4 key购买 nike

我有以下代码:

#define MACRO(x...) x
MACRO(foo,bar)

使用 gcc -E,显示 MACRO 扩展为 foo,bar。但是,C11 标准为类函数宏定义了以下语法:

# define identifier lparen identifier-list opt ) replacement-list new-line
# define identifier lparen ... ) replacement-list new-line
# define identifier lparen identifier-list , ... ) replacement-list new-line

似乎没有一个允许 x... 位。奇怪的是,上面的代码片段扩展为 foo,bar,而 #define MACRO(x, ...) x 正确扩展为 foo。这是一个 gcc 错误,还是我遗漏了什么?

编辑:没关系,这似乎是一个 gcc 扩展,已记录 here .

最佳答案

GCC 有自己的规则。省略号前的逗号表示该参数是必需的,没有逗号表示它是可选的。

关于c - 可变参数宏 - 省略号前的逗号?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/37167661/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com