如何跨不同目录中的文件共享变量

时间:2015-11-09 06:07:04

标签: c++ extern

我在一个.cpp文件中有一个变量定义。

(file1.cpp)

int N;
....
N =3;

(目录/ file2.cpp)----> file2.cpp在另一个目录中。

extern int N;

cout << n << endl ;    -----> It is printing 0.

它应该打印3..right?我在做什么错误..请让我知道。目录结构是:

(主目录)

file1.cpp   directory

(目录)

file2.cpp

谢谢, 阿维纳什

2 个答案:

答案 0 :(得分:0)

在一个文件中,此变量应按原样定义:

  int N;

在其他人中extern(最好使用头文件来包含这样的声明),即:

  extern int N;

目录结构并不重要,只需将cpp文件编译在一起以允许链接器解析连接。

答案 1 :(得分:0)

要使其工作,您可以使用以下方法:

头文件,提供声明,以便其他翻译单元可以轻松导入它:

// dir1/file1.hpp
extern int N;

具有变量定义的实现文件:

// dir1/file1.cpp
int N = 3;

使用变量的示例客户端:

// main.cpp
#include "dir1/file1.hpp"

#include <iostream>

int main () {
    std::cout << N << std::endl;
    return 0;
}

请注意,dir1 / file1.hpp

中省略了包含保护