none
MFC关于全局变量的使用问题 RRS feed

  • 问题

  • 我利用MFC向导建立了一个基于对话框的程序,
    结果生成了一下几个文件:
    DataProcess.cpp
    DataProcessDlg.cpp
    StdAfx.cpp

    DataProcess.h
    DataProcessDlg.h
    StdAfx.h

    然后我在DataProcess.h中的类外部声明了一个外部全局变量
    extern TAG_FILE_PATH g_myfilepath;(结构体声明在另外一个头文件中,该头文件已经包含在DataProcess.h
    文件里)。
    然后我在其他类的实现文件中使用g_myfilepath的时候,编译通过,但链接出现错误,为什么?
    我在使用之前已经进行了引用性声明了

    阿荣
    2009年3月6日 3:55

答案

全部回复

  • 找不到声明错误吧??
    确定你在其它文件中已经声明了吗?TAG_FILE_PATH g_myfilepath
    2009年3月6日 5:09
  •  
    //Thread.h
    typedef struct thread_param_s
    {
     long pos;
     long pic_type;
     HWND parent;
     HANDLE pic;
     TCHAR caption[ MAX_PATH ];
     TCHAR lab_txt[ MAX_PATH ];
     TCHAR ani_path[MAX_PATH];
     
     BOOL is_progress_visible;
     BOOL is_avi_visible;
    } thread_param_t;
     
    extern thread_param_t thread_param;

     
    //dowait.cpp
    #include "Thread.h"
    thread_param_t thread_param = { 0, 0, 0, 0, 0, 0, 0, TRUE, TRUE };
     
    #include "Thread.h"
    waitdialgo.cpp
    ani_ctrl.ShowWindow( thread_param.is_avi_visible ? SW_SHOW : SW_HIDE );

    湖北武汉
    2009年3月6日 12:54
  •  
    extern thread_param_t thread_param; 只是声明,不是定义,并未引起内存分配

    thread_param_t thread_param = { 0, 0, 0, 0, 0, 0, 0, TRUE, TRUE }; //定义为全局变量,以后就可以在别的文件中引用了


     
    湖北武汉
    2009年3月6日 14:10
  •  只包含头文件,不进行全局变量声明试试
    自强不息,厚德载物。
    2009年3月10日 5:07
    版主
  • 虽然问题解决了,但是很疑惑,为什么不用声明,反而可以直接调用呢?
    阿荣
    2009年3月10日 8:32