//header.h
void foo(int a = some_global_variable);
//file1.cpp
int some_global_variable = 2;
void foo(int a){}
//file2.cpp
#include "header.h"
foo();
我在编译some_global_variable未声明的标识符(header.h)时遇到错误,
这是有道理的,因为在some_global_variable
中定义了file1.cpp
。有没有办法实现这个目标?
编辑:我在extern some_global_variable
中尝试header.h
。编译器没有抱怨。这是正确的方法吗?
答案 0 :(得分:0)
编译器需要知道some_global_variable
在遇到它作为默认参数时的存在(但不值。)
为此,使用extern
将工作。然后它的定义可以驻留在不同的编译单元中。
答案 1 :(得分:0)
你可能想要这个:
<强> header.h 强>
extern int some_global_variable; // <<<<<<<<<<<<< add this line
void foo(int a = some_global_variable);
如果添加extern int some_global_variable;
,编译器会知道某处有一个名为some_global_variable
的变量,否则它不会知道some_global_variable
是什么。
<强> file1.cpp 强>
int some_global_variable = 2;
void foo(int a) {}
<强> file2.cpp 强>
int main()
{
foo();
}