常使用的如在C中使用extern
在class中使用static
为什么使用namespace不行
为什么不能直接在cpp中加static再引入

解决方案 »

  1.   

    在某一个CPP里面 UINT g_nIndex = 0;在stdafx.h里面extern UINT g_nIndex;如果多个CPP只是读取那没什么,要是还有写操作,最好用互斥量.
    #include "afxmt.h"
    CCriticalSection cs;{
    cs.Lock();
    g_nIndex = 1;
    cs.Unlock();
    }
      

  2.   

    在某一个CPP里面 UINT g_nIndex = 0;在stdafx.h里面extern UINT g_nIndex;
    我一般用这种方式
      

  3.   

    如果是使用该方法,如果这样的数据结构多了就很难维护,我现在比较喜欢使用一个专门的class来维护这些全局数据结构
      

  4.   

    把你的公用变量放在App类里面,外部用AfxGetApp()获取App对象指针,用该指针来取这个变量也可以。
      

  5.   

    不一定使用MFC来开发程序,我常常使用ATL/COM所以有能使用App类
      

  6.   

    在某一个CPP里面 UINT g_nIndex = 0;在stdafx.h里面extern UINT g_nIndex;
      

  7.   

    static 只能在本编译单元中使用,不能extern导出
      

  8.   

    namespace::globeVariable不可以的吗?
      

  9.   

    你可以写一个自动互斥访问的template类template<class T>
    class MutexAccess
    {
    private:
      T m_Member;
      CMutex m_Mutex;
    public:
      T& operator T() {
         //锁定
         return m_Member;
        //解锁
      }
      T& operator =(T newvalue) {
         //lock
         m_Member = value;
         return m_Member;
         //unlock
      }
    };上面的类还要有mutex的创建过程,可以在构造函数里创建
    用的使用定义变量如下:
    MutexAccess<int> m_GlobalValue;
    这样可以保证你的变量是线程访问安全的.如果是仅仅定义一个变量随便在那个cpp中定义然后在其它地方用extern 变量名  声明就可以了.
      

  10.   

    namespace 对应的是数据类型,而你使用的是具体的变量,cpp好象只有enum可以这么用.
      

  11.   

    应该是namespace::操作符号的问题. :: 是个范围的操作符号,  :: 是不是可以从namespace 中取出变量?
      

  12.   

    namespace 怎么个不行法?是不是说找不到那个namespace?如果是这种情况,那么其他使用这个namespace的函数必须也有这个namespace的声明,比如下面的例子:
    //a.cpp
    #include <iostream>
    #include "b.h"
    // 回 hdqqq(小西瓜) namespace中可以有定义也可以有变量,比如下面的
    //std::cout,std::endl,space::b都是变量
    int main()
    {
    std::cout << space::b << std::endl; return 0;
    }
    //b.h
    //必须的,这样a.cpp才能知道存在space这个namespace
    //我曾经犯过错,使用了using namespace std但是没包含任何标准C++头文件
    // 于是编译器报告找不到namespace std;
    namespace space
    {
    extern int b;
    }
    b.cpp
    #include "b.h"namespace space
    {
    int b = 10;
    }
    编译方法:
    cl /c a.cpp /EHsc
    cl /c b.cpp
    link /out:a.exe a.obj b.obj
      

  13.   

    我试验了一下,
    没有namespace的时候
    用extern 变量有了namespace 只要namespace spacename
    {
      extern 变量
    };就可以使用在spacename命名空间中的其它cpp文件中定义的变量了。就是说在extern外面在 加上 namespace。