了解C和C ++中的暂定定义

时间:2018-08-13 15:23:13

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

我知道临时定义就像

int i;
int i;

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

int i=5;

使用一次,但是在代码 (为什么我需要两次声明它?)中具有许多临时定义有什么意义?
以及为什么重复的临时定义会在 C ++ 中产生错误并在 C

中正常工作

1 个答案:

答案 0 :(得分:2)

因为C ++没有暂定的定义。那是C ++所没有的C语言功能。

因此,当您编写int i;时,这是一个真实的定义(不附带初始化程序)。根据一个定义规则,您只能有一个定义(!)。

作为一个为什么您要想要在C语言中使用它们的示例,老实说,我想不出一个。也许这就是为什么C ++不会打扰!

请注意,您仍然可以根据需要多次声明东西。对于对象,您需要使用extern来表示这种意图:

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

int x = 0;