在一个project中有许多文件,一般情况下在哪个文件里定义全局变量和函数?
例如在a.cpp中定义CString temp
那么在b.cpp中能使用吗?
它们在其他文件中是否可见?

解决方案 »

  1.   

    都可以。在共同的头文件中申明该变量为extern
      

  2.   

    上面的意思是不是这样的:
    在一个cpp文件中申明CString temp
    在头文件中申明extern temp  那么在包含这个头文件的cpp中就能看到这个变量!请问在头文件中能不能申明全局变量?是不是一定要在cpp文件中。
      

  3.   

    比如再mainframe.cpp中这么声明:
    CString temp;在a.cpp中要用,则extern一下:
    extern CString temp;
    就可以用了。
    也可以在一个头文件中extern,然后在mainframe.cpp和a.cpp中都包含这个头文件,就可以了。
      

  4.   

    另外发现在.cpp中声明的全局变量,即便是在头文件中extern了,并且两个文件中都包含了同一个头文件,如果使用者是.c文件,则.c认为这个变量没有定义。
    不一定要在.cpp中声明和extern,
    可以这样在头文件abc.h中定义:
    #ifdef _MAIN_FRAME_CPP_
    CString temp;
    #else
    extern CString temp;
    #endif
    然后在mainframe.cpp和a.cpp中都包含头文件abc.h,也是一样的效果。当然了,mainframe.cpp中当然要定义_MAIN_FRAME_CPP_这个宏:
    #ifndef _MAIN_FRAME_CPP_
    #define _MAIN_FRAME_CPP_
    ...
    #endif
      

  5.   

    cpp写 CString temp; 那叫定义,defination
    h或其他cpp中写 extern CString temp叫声明, declaration
    编译器只为定义开空间。一个变量只能定义一次,但是可以声明多次。
    看着办吧。