标题: 定义与声明 [打印本页]

作者: liuyang    时间: 2012-1-14 03:53
标题: 定义与声明
      在头文件定义类型,常常会遇到编译时报,已在某个模块中定义了。

         这其实是由于重复定义导致C++编译器无法通过编译,C编译器就能通过,因为它有重复定义机制。 文件在编译时会把每个源代码文件分别编译成对应的目标文件,其中会含有引入变量符号。头文件一般只存放声明。头文件只是把代码装入到源代码中然后编译的,如果你在.h里定义了变量将会导致多个引用其头文件的模块都定义了改变量,致使VC编译器报错。 所以一般在.h中用extern int i;只声明下,编译时就是一些外部引入变量符号,然后再某个.cpp中在具体定义。  

    或者用这个只就省了声明与定义分开写的麻烦。

 

     假设cl.h   代码如下

 

    #ifdefine    MAIN_DEFINE

    # define  EXTERN                             //定义

   #else

  #define    EXTERN  extern                //声明

   #endif 

 

 

在定义的.cpp中加载

   #define  MAIN_DEFINE

  #incluade " cl.h"

在声明的.cpp中加载

      #incluade " cl.h" 





欢迎光临 (http://www.51hei.com/bbs/) Powered by Discuz! X3.1