事情是这样的:
a.h和b.h都是第三方提供的,我们不能修改。。而这两个h里面,都有相同的宏,可恶的是宏的值居然不一样。
现在的问题是:
我要用b.h中定义的一个struct,但引入b以后,上面的宏就打架了。。能不能有什么办法,不include。我直接就用类似于extern的东西,将那个结构体的定义搞进去?

解决方案 »

  1.   

    不在头文件里面包含头文件,在.cpp文件里面包含。如果实在在头文件里面要用的话,就前向声明。
      

  2.   


    你说的前向申明是指的::不include了,直接把struct的定义摘抄下来吗?问题是这个结构体又包含了别的结构体。反正就这样绕来绕去的。没法搞。。都是变态的东西。。
      

  3.   

    struct如果不涉及到b内的对象
    可以自己写一个一样的
      

  4.   


    提前声明是指只声明一个类型,不去定义
    比如
    class CTest;
      

  5.   

    根本解决之道是把a.h和b.h放到不同的空间去
    用namespace
    这样就不会冲突了