文件1:
static char* const path; //GLOBAL
int main()
{
path = FunctionReturningPath();
UsePath()
}
文件2:
extern char* const path; //GLOBAL from file 1
UsePath() //function using global
{
something = path;
}
(伪)
想在文件2中使用路径。
我在文件1中定义了main的全局,是使用全局的不良做法吗?
并且不编译:
Compile Error: error LNK2001: unresolved external symbol _path
感谢任何帮助。谢谢。
答案 0 :(得分:6)
static char* path; //GLOBAL
错误。使其静态意味着它是文件的本地,并且不能使用extern公开。你想要:
char* path; //GLOBAL
答案 1 :(得分:5)
文件范围内的static关键字表示使变量特定于该编译单元。摆脱它。
答案 2 :(得分:1)
删除static
关键字,因为它会使符号对链接器不可见。
通常,您应该尽可能避免使用全局变量。相反,尽可能将变量作为参数传递,或使用命名空间(如果使用C ++)。使用全局变量,您可能会冒与外部库的名称冲突,并且可以从任何地方修改变量。