如何声明外部字符指针?

时间:2010-02-15 21:08:20

标签: c syntax variables global-variables external

文件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

感谢任何帮助。谢谢。

3 个答案:

答案 0 :(得分:6)

static char* path; //GLOBAL

错误。使其静态意味着它是文件的本地,并且不能使用extern公开。你想要:

char* path; //GLOBAL

答案 1 :(得分:5)

文件范围内的static关键字表示使变量特定于该编译单元。摆脱它。

答案 2 :(得分:1)

删除static关键字,因为它会使符号对链接器不可见。

通常,您应该尽可能避免使用全局变量。相反,尽可能将变量作为参数传递,或使用命名空间(如果使用C ++)。使用全局变量,您可能会冒与外部库的名称冲突,并且可以从任何地方修改变量。