gpt4 book ai didi

c++ - 奇怪的编译输出

转载 作者:可可西里 更新时间:2023-11-01 14:59:25 26 4
gpt4 key购买 nike

我刚刚编译了这段代码:

void foo(int bar...) {}

int main()
{
foo(0, 1);
return 0;
}

而且编译输出真的很奇怪:

g++ test.c

输出:

Nothing

gcc test.c

输出:

test.c:1:17: error: expected ';', ',' or ')' before '...' token

我知道参数后面没有逗号,这个编译输出奇怪的问题。

我理解为什么这在 C 中无效,但无法理解为什么它在 C++ 中有效。

最佳答案

另一个答案是正确的(我赞成),但仅供引用[8.3.5 Functions clause 3]:

parameter-declaration-clause:

parameter-declaration-listopt...opt

parameter-declaration-list , ...

这意味着逗号在C++中是可选的,但在C中不是。你也可以在C++中写void foo(...),因为参数声明列表也是可选的。

至于为什么在 C++ 模板中,test(...) 在将 SFINAE 用于“catch-all”函数时很常见。但是,在 C 语言中,foo(...) 没有用处,因此它是非法的。

关于c++ - 奇怪的编译输出,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/12132966/

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