头文件B和头文件C中都包含有头文件A,主函数中包含有头文件B、C,编译预处理后主函数中含有多少个头文件A

头文件B和头文件C中都包含有头文件A,主函数中包含有头文件B、C,那编译预处理后主函数中含有多少个头文件A,一个还是两个?... 头文件B和头文件C中都包含有头文件A,主函数中包含有头文件B、C,那编译预处理后主函数中含有多少个头文件A,一个还是两个? 展开
 我来答
庄政警
2017-07-01 · TA获得超过9918个赞
知道大有可为答主
回答量:1113
采纳率:94%
帮助的人:919万
展开全部

当然是一个了,多了就出问题了

C语言一般用宏定义的方式来避免头文件被重复包含

比如头文件A,它可能是这样的

#ifndef A_AAAAAAAA     
#define A_AAAAAAAA

    ........//各种定义

#endif

#ifndef A_AAAAAAAA这句预处理语句的意思是:如果A_AAAAAAAA这个宏不存在,那么从#ifndef到#endif之间的内容才会被处理,否则就会被忽略。被包含一次后就会产生A_AAAAAAAA宏,下次就会被忽略。

在你这个例子中 B包含了A, C也包含了A, 主文件包含了B和C:

#include <B.H>  

#include <C.H>

主文件包含B.H的时候还没有A_AAAAAAAA宏,于是处理A文件所有的内容,因为有#define A_AAAAAAAA,产生了A_AAAAAAAA宏,下次再包含C的时候碰到#ifndef A_AAAAAAAA,就会忽略A的相关内容了。

现在有些编译器(比如微软的VC),在文件开头加一句:

#pragma once 

这样就由编译器负责文件不被重复包含了 ,比较省事,但这不是标准,可能有编译器不支持

推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式