gpt4 book ai didi

c++ - 我可以用逗号声明多个函数吗?

转载 作者:行者123 更新时间:2023-12-03 16:19:08 24 4
gpt4 key购买 nike

我们可以使用 ,运算符一次声明多个函数?
此代码在 gcc 上编译:

void f(), g();
void f() {}
void g() {}

int main() {
f();
}
它是编译器的标准还是特殊性?

最佳答案

这是标准的。看看你可以申报的所有东西:

int a, *pa, f(int), *g(int);
这是一个单一的声明,只有一个类型说明符 int和四个声明符。请注意,尽管具有相同的类型说明符,但那里的两个变量声明具有不同的类型。同样处理两个函数声明。类型说明符仅覆盖类型的最内层;各个声明符将其包装在诸如指针或功能性之类的东西中。
函数定义 int f() { ... }是独一无二的,不寻常的。虽然它用于声明和定义函数,并且涉及一些与声明相同的语法构造,但它在语法上与声明是分开的。由于声明是具有声明符列表的东西,因此函数定义语法不会继承该行为。所以你可以在一个声明中声明多个函数,但函数定义不是声明(尽管它声明了一个函数!)所以你一次只能做一个。
稍微编辑一下:语法的这一方面,在类型说明符和声明符之间传播类型信息,是 C 和 C++ 的核心可怕之处之一。它可以追溯到 C 的早期,当时该语言的重点意味着大多数变量是 int s 和类型实际上是声明中最可选的部分。我们大多数人都以 int* a, b 的形式经历过这种情况。只创建一个指针,但诸如声明函数指针时出现的括号之类的东西,以及复杂类型定义的整体螺旋性,也源于 1970 年代初期那个基本的、从未纠正的错误。

关于c++ - 我可以用逗号声明多个函数吗?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/67181496/

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