|
发表于 2009-3-14 00:20:03
|
显示全部楼层
这并不矛盾,你注意 FileA.h需要FileB.h的某种支持,并不意味着FileB.h一定要放在FileA.h的前面,
例如FileA.h中定义了某个宏,这个宏中用到的信息在FileB.h中定义,但是这些宏肯定是在.c中使用
的,因此对于这种情况FileA.h和FileB.h的前后关系是不重要的。但是,如果明确FileB.h要检测FileA.h
中定义的某个宏的存在性,那么就需要考虑前后的问题了:
举一个例子:FileB.h中定义了一个结构体类型
typdef struct
{
....
}EXAMPLE;
在FileA.h中某个宏用到了结构体类型,例如
#define DIM_EXAMPLE(__NAME,__VALUE) EXAMPLE __NAME[__VALUE] = {0};
那么显然,当File_Config.h包含了FileA.h和FileB.h以后,无论先后顺序,包含了File_Config.h的
.c文件中都可以正常的使用宏DIM_EXAMPLE()
^_^ 您很认真地思考这个问题了,非常高兴您能提出您的疑问
《深入浅出AVR单片机》只是提出了循环包含的问题,并介绍了两种极端的包含原则,以及一种变通的
包含原则。然而更常见,更贴近应用实际的包含原则,我在《深入浅出AVR单片机》精要 这本书的第十四
章中详细的加以阐述了,您可以在本论坛下载此书的PDF版本^_^ |
|