gpt4 book ai didi

c++ - 具有多个声明符的声明 - 定义?

转载 作者:行者123 更新时间:2023-11-30 02:37:32 25 4
gpt4 key购买 nike

下面的声明也是定义吗?

int f(), i = 1;

如果我们像这样重写它,只有第二个声明是一个定义:

int f();
int i = 1;

C++ 标准似乎将术语定义应用于整个声明,但对我来说它似乎应该应用于部分声明。

最佳答案

每个声明符都被单独视为定义或仅声明其标识符。

f() 仅被声明。其他地方应该有定义。

i 已定义。后续声明需要使用 extern 以避免重新定义。

§3.1 声明和定义在 C++14 标准中说,

A declaration is a definition unless it declares a function without specifying the function’s body, it contains the extern specifier or…

该段继续进行,有很多规则和异常(exception)。尽管讨论的功能并不立即属于整个声明,但它没有在此处提及声明符,这可能是标准中的一个缺陷。

我们还有 §8/3,

Each init-declarator in a declaration is analyzed separately as if it was in a declaration by itself.

这可以解释为覆盖 §3.1/2 中“传染性”规则的表述。

关于c++ - 具有多个声明符的声明 - 定义?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/31535401/

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