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

Understanding tentative definitions in C and C++

本文关键字:定义 C++ 了解      更新时间:2023-10-16

我知道暂定定义是这样的

int i;
int i;

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

int i=5;

并且使用了一次,但是在代码中有许多暂定定义有什么意义(为什么我需要声明两次?
以及为什么重复的试探性定义会在C++中产生错误并且在C中工作正常

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

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

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

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

extern int x;
extern int x;
extern int x;
int x = 0;