关于vc头文件的预编译指令请教!
VC的头文件开头,一般都有“#if !defined(AFX_XXXX_H_ECG.............)”之类的代码,据书中解释是为了“防止此文件被包含多次”,我想请教一下什么叫“被包含多次”,什么样情况下会“被包含多次”,包含多次了会怎么样? 问题点数:0、回复次数:2Top
1 楼crybird(寒号鸟)回复于 2003-11-01 10:12:48 得分 0
a.h b.h c.h...............
b.h//////////////包含两次a.h
#include "a.h"
#include "a.h"
c.h////////////包含3次a.h,b.h本身包含两次
#include "a.h"
#include "b.h"
///////出现 重定义 的问题,不能编译和执行
Top
2 楼csdnzhu(我什么也不会)回复于 2003-11-01 11:32:21 得分 0
其实你贴出来的语句是VC编译器自动加的,所以有些晕,其实在我们自己编程写头文件时是这样写的
比如在 myclass.h中这样写
#IFNDEF MYCLASS_H
#DEFINE MYCLASS_H
类定义
#ENDIFMYCLASS_H
这样在预处理时,一旦myclass.h曾经在哪一个文件中被包括过,那么DEFINE 肯定被宏定义过,当在有#include "myclass.h"语句时,myclass.h里面的语句就不会被编译,保证一个文件不能被多次包含Top



