在a.h中要包含头文件b.h和c.h,但是在b.h和c.h中同时包含头文件d.h,这样就在link的过程中出现错误,请问各位高手如何处理这个问题。

解决方案 »

  1.   

    b和c的.h中不直接include "d.h"
    而是classs d;放在类定义前面
      

  2.   

    #if !defined(_D_H_)
    #define _D_H_D.h的内容#endif
      

  3.   

    或者在头文件前加
    #pragma once 试试。
      

  4.   

    如果用的是VC.net,所有.h文件开头都加上
    #pragma once,就行了
      

  5.   

    1.
    #pragma once2. 
    //d.h
    #ifndef defined __D_H__
    #define __D_H__d.h原来的内容#endif3。在b.h和c.h中使用class D;声明,同一楼
      

  6.   

    http://www.zdnet.com.cn/developer/code/story/0,2000081534,39037524,00.htm
      

  7.   

    #ifndef _INCLUDE_H
    #define _INCLUDE_H
    ...
    #endif
    看看vc生成的源码中别人别人是怎么写的,就明白了.
      

  8.   


    在头文件的最开始
    #ifndef _INCLUDE_H
    #define _INCLUDE_H
    原来头文件内容

    最后加上
    #endif
    就可以了。
    提示:
    #ifndef 和#define后面的宏不要和其他重复,否则也达不到目的
      

  9.   

    #if !defined(_EXCINFO_H)
    #define _EXCINFO_H
    文件内容
    #endif
      

  10.   

    尽量不要在*.h文件里包含,在*.Cpp包含。
    如:*.h文件class CAbb;
    ...
    *.cpp文件#include "abb.h"