我有以下两个文件:

  • foo.h
  • bar.cpp

  • foo.h中,我清除了一个变量extern

    现在,我想在bar.cpp中使用相同的变量(包括foo.h之后)。

    在VS2008和VS2010下,我收到unresolved external symbol错误,而在具有gcc的Ubuntu下,编译成功。

    (即,我正在尝试编译以下源代码:http://www.fromdual.com/using-mysql-user-defined-functions-udf; foo.h是指srv0srv.h,而bar.cpp是指源代码。所有包含的内容都已存在,编译成功,链接失败)

    可能是什么问题?

    最佳答案

    extern关键字向编译器指示该变量之后的变量已在其他地方声明。它实际上并没有为变量分配空间。如果要创建一个全局变量,可以通过包含一个头文件来使用(顺便说一句,通常这是个坏主意),可以按以下方式进行操作。

    在foo.h中:

    extern int myVar;
    

    在foo.cpp中:
    int myVar;
    

    myVar现在位于foo.cpp中,但是foo.h中的extern语句允许其他文件(例如bar.cpp)中的代码通过包含foo.h来访问它。

    09-04 16:47
    查看更多