通常我们不在 头文件中定义全局变量 因为连接的时候生成OBJ文件时会出现会重复定义那我们在头文件中定义 类呢 结构体呢?就像通常我们做的
好几个源文件包含类的头文件,那为什么这个时候在连接的时候 编译器不会报警说 OBJ文件中看到好几次类的定义了,还是这个类定义实际上只是一个声明呢?我搞不清楚啊 大家帮我解答以下啊

解决方案 »

  1.   

    加上#ifndef 
    #endif之类的语句!
      

  2.   


    不是这么简单的 这个只是解决 同一源文件多次引用头文件的问题 我说的是生成OBJ文件时的链接问题!!!!
      

  3.   

    进行头文件的宏定义后,就不会出现楼主所描述的情况,由此分析楼主的基础还需要补一下!
    #ifdef xxxxx
    #endif
    #ifndef xxxxx
    .....
    #endif 
      

  4.   

    你看看头文件吧,一般都会有
    #ifndef XXXX
    #define XXXX#endif把这些去掉,重复引用也会出现问题的
      

  5.   


    不好意思 你没理解我的意思 这个东西我知道的
    我的程序已经写了宏定义
    我指的是链接生成EXE文件的时候如果你在头文件中定义了全局变量 加上宏保护
    链接照样出错 因为 多个OBJ文件产生了额重复定义
      

  6.   

    你们都没理解我的意思
    有点写错了 不是生成OBJ的时候 是OBJ链接生成EXE的时候算了 你们都以为我乱谈
      

  7.   

    你确信加了? 为什么我不会这样a.h
    -----------------------------
    #ifndef MACRO_H
    #define MACRO_Hint a;#endif // MACRO_H
    -----------------------------b.cpp
    -----------------------------
    #include "a.h"
    -----------------------------c.cpp
    -----------------------------
    #include "a.h"
    -----------------------------我这样编译没错