【发布时间】:2012-05-12 09:59:41
【问题描述】:
我正在阅读“Think in C++”,它刚刚介绍了extern 声明。例如:
extern int x;
extern float y;
我想我理解它的含义(没有定义的声明),但我想知道它什么时候证明有用。
有人可以举个例子吗?
【问题讨论】:
-
我不得不多次使用
extern提供定义。当仅定义另一个源文件中的表时,Microsoft 工具会因缺少符号而产生链接错误。问题是,该表是const,而C++ 编译器在翻译单元中将其提升为static。例如,请参阅ariatab.cpp和kalynatab.cpp。 -
我认为 Nik 的答案是正确的,因为他是唯一一个似乎回答了 C++ 问题的人。其他人似乎都跑题了。
-
从 C++17 开始,
inline可能是完成您想要使用extern完成的任务的更好方法。使用inline,您可以在标头中定义全局变量,而不必担心多个定义问题。 stackoverflow.com/questions/38043442/…