21

我在其中一个 cpp 文件中有一个全局变量,我在其中为其赋值。现在为了能够在另一个 cpp 文件中使用它,我将其声明为,extern并且该文件具有多个使用它的函数,因此我在全局范围内执行此操作。现在,这个变量的值可以在其中一个函数中访问,而不能在另一个函数中访问。除了在头文件中使用它之外的任何建议都会很好,因为我浪费了 4 天的时间来玩它。

4

1 回答 1

53

抱歉,我忽略了除了使用头文件之外的其他建议的答案请求。这就是标题的用途,当您正确使用它们时......仔细阅读:

全局.h

#ifndef MY_GLOBALS_H
#define MY_GLOBALS_H

// This is a declaration of your variable, which tells the linker this value
// is found elsewhere.  Anyone who wishes to use it must include global.h,
// either directly or indirectly.
extern int myglobalint;

#endif

全球.cpp

#include "global.h"

// This is the definition of your variable.  It can only happen in one place.
// You must include global.h so that the compiler matches it to the correct
// one, and doesn't implicitly convert it to static.
int myglobalint = 0;

用户.cpp

// Anyone who uses the global value must include the appropriate header.
#include "global.h"

void SomeFunction()
{
    // Now you can access the variable.
    int temp = myglobalint;
}

现在,当您编译和链接您的项目时,您必须:

  1. 将每个源(.cpp)文件编译成一个目标文件;
  2. 链接所有目标文件以创建您的可执行文件/库/任何东西。

使用我上面给出的语法,您应该既不会出现编译错误,也不会出现链接错误。

于 2012-09-05T22:25:43.550 回答