
头文件B和头文件C中都包含有头文件A,主函数中包含有头文件B、C,编译预处理后主函数中含有多少个头文件A
头文件B和头文件C中都包含有头文件A,主函数中包含有头文件B、C,那编译预处理后主函数中含有多少个头文件A,一个还是两个?...
头文件B和头文件C中都包含有头文件A,主函数中包含有头文件B、C,那编译预处理后主函数中含有多少个头文件A,一个还是两个?
展开
1个回答
展开全部
当然是一个了,多了就出问题了
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
这样就由编译器负责文件不被重复包含了 ,比较省事,但这不是标准,可能有编译器不支持
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询