【问题标题】:Defining Global Variables Between Two .cpp Files在两个 .cpp 文件之间定义全局变量
【发布时间】:2013-08-07 21:08:06
【问题描述】:

如何在 A.cpp 和 B.cpp 之间共享/全局化一个 bool 变量,其中它们都不包含其他的 .h 文件? 他们有其他联合头文件,但彼此没有。我可以在这些共享标头中定义全局变量吗?

谢谢

【问题讨论】:

  • 写问题前请先搜索。如果您在本网站搜索您的标题,您会更容易找到答案。
  • 这暗示了一个糟糕的设计。如果这两个文件如此无关,为什么它们共享一个bool

标签: c++ global-variables


【解决方案1】:

我可以在这些共享标头中定义全局变量吗?

没有。

在A.cpp(或)B.cpp中写入,

int gVariable = 10;

请记住只在一个源文件中写入上述定义,否则如果您在两个源文件中都写入,链接器会报错。

并且在A.cpp的通用头中,B.cpp写入,

extern int gVariable;

【讨论】:

  • +1,但尽管您在技术上对“我可以定义...?”说“不”是正确的,但我不确定 OP 是否知道“定义”和“宣布”。答案是“是的,您可以在共享标头中声明变量,然后在其中一个源文件中定义它。”
  • 你是对的。我更多地关注问题中的 define 词。头文件中的extern是声明,虽然可以在各种源文件中多次声明。
  • 谢谢你们。只是一个简短的问题......我可以输入“int gVariable = 10;”吗?在公共头对应的 .cpp 文件中?
  • @user2517676 不,这将导致多个符号。您必须在头文件中进行外部声明,而定义仅在一个源文件/翻译单元中给出。
  • 我的意思是在 C.h 中声明 gVariable,在 C.cpp 中定义它,而 A.cpp 和 B.cpp 都包含 C.h。
【解决方案2】:

文件 1:

int x = 50;

文件 2:

extern int x;

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2020-04-30
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2012-10-13
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多