【问题标题】:Understanding tentative definitions in C and C++ [duplicate]了解 C 和 C++ 中的暂定定义 [重复]
【发布时间】:2018-08-13 15:23:13
【问题描述】:

我知道暂定定义就像

int i;
int i;

并且它们在链接时组合在一起 而真正的定义就像

int i=5;

并且使用过一次,但是在代码中有许多暂定定义有什么意义(为什么我需要声明两次?)
以及为什么重复的暂定定义会在 C++ 中出现错误并且在 C

中可以正常工作

【问题讨论】:

  • 1) 不需要。 2) C 和 C++ 是不同的语言。

标签: c++ c multiple-definition-error


【解决方案1】:

因为 C++ 没有暂定定义。这是 C++ 所没有的 C 语言特性。

所以当您编写int i; 时,这是一个真正的定义(没有附加初始化程序)。根据一个定义规则,您可能只有一个定义 (!)。

至于你为什么想要在 C 中使用它们的一个例子,老实说,我想不出一个例子。或许这就是 C++ 不打扰的原因!

请注意,您仍然可以随意声明内容。对于对象,您需要使用 extern 来表示此意图:

extern int x;
extern int x;
extern int x;

int x = 0;

【讨论】:

    猜你喜欢
    • 2010-12-02
    • 2013-04-10
    • 1970-01-01
    • 1970-01-01
    • 2021-11-21
    • 2021-06-25
    • 2019-08-14
    • 2014-08-31
    • 1970-01-01
    相关资源
    最近更新 更多