我在看一个例子程序,在app.cpp文件中,定义了几个全局变量,然后在app中,接下来,产生一个LoginDlg,LoginDlg在只包含了app.h的情况下,竟然可以直接使用在app.cpp中定义的全局变量,这样可行么???为什么能直接编译通过?按理说,如果全局变量定义在app.h中才可以直接使用的吧?

解决方案 »

  1.   

    LoginDlg是在另一个CPP里使用的吗?
      

  2.   

    有加exetrn 类型 XXX;吗?
      

  3.   

    也没有extern ,是不是很奇怪呢??竟然就可以直接适用了。
      

  4.   

    要extern 把, 可能是类中也定义了一个同名的变量呢
      

  5.   

    全局的肯定可以在别的文件中访问么,要不咋叫全局...
    另外,头文件中一般不会“定义”变量,因为这样的话,每个包含它的文件里都会有一份拷贝。
    通常
    a.cpp
    #include "a.h"
    int g_n;// 定义全局a.h
    extern int g_n; // 声明b.cpp
    #include "a.h"g_n = 123;  // 使用
      

  6.   

    不管你在那个CPP中声明一个全局变量 ,在另一个CPP中想调用的话,就只要把它的类声明(*.h)include进来并且实例化再去访问那个变量,就可以了。
    当然还有个简单的方法,就是你把这个变量声明在stdafx.h中,在你想使用的 cpp中#include   "stdafx.h "就可以直接使用这个变量了。
    综上访问应该是没有问题的。
      

  7.   

    正解,必须有个extern 声明,