二、不同头文件中的类的嵌套 在实际编程中,不同的类一般是放在不同的相互独立的头文件中的,这样两个类在相互引用时又会有不一样的问题。重复编译是问题出现的根本原因。为了保证头文件仅被编译一次,在C++中常用的办法是使用条件编译命令。在头文件中我们常常会看到以下语句段(以VC++6.0自动生成的头文件为例): ...
从上面的头文件内容可以看出,虽然两个头文件相互包含,但是两个头文件内容并不相互引用。因此编译不会出现问题。但是如果像下面文件,头文件变量又相互引用,则编译会出现变量未知错误 a.h:9:9: error: unknown type name 'B_H’ /* a.h */ #ifndef __A_H_ #define __A_H_ #include "b.h" typedef ...
C语言头文件互引用是指两个或多个头文件相互包含的情况。在C语言中,头文件是扩展名为.h的文件,包含了C函数声明和宏定义,被多个源文件中引用共享。 一、头文件互引用会导致以下问题: 1.编译错误:如果两个头文件互相包含,会导致编译器无法确定哪个头文件应该先被包含,从而导致编译错误。 2.重复定义:如果两个头...
头文件相互包含,而且变量又相互引用。此时应该将其中一个头文件拆成两个头文件b1.h、b2.h,b1.h让原来的a.h包含;b2.h用来包含a.h。不要使两个头文件变量相互引用引用的设计方式出现。 从上面main.c内容可以看出宏定义的顺序可以不按顺序出现,编译也不会出错。
而且两个文件的.c文件在头文件包含上可以互相包含。如图所示。 项目中遇到的这个头文件包含问题导致我重新搜索资料进行该问题的深入了解,故下文是通过网络资源的搜查及加上自己对它的理解,进行了相关内容的整理,希望对感兴趣的小伙伴有所帮助。 背景 对于C语言来说,头文件的设计体现了大部分的系统设计。不合理的头...
类之间的相互引用:当两个类互相引用对方的类型或使用对方的成员时,可能会出现循环依赖问题。 头文件之间的相互引用:当两个头文件包含对方的头文件时,也可能会导致循环依赖问题。 循环依赖问题通常是代码组织或设计上的问题,可以通过重新思考代码结构来避免或解决。
再来说说为何不直接在头文件内声明,而是需要extern关键词,若是直接在头文件内声明,两个”.c”文件同时包含该头文件,在编译时会出现重复定义的错误,加了”#ifndef”之类的条件编译也没有效果,所以为了避免该错误的发生,我使用了extern的关键词。至于为什么,还得待有时间去深究编译器原理。
#include <delay.h> //在主程序包含.h文件,不能包含.c文件 通常一个C程序工程按功能可以分成多个模块, 一个模块通常由两个文档组成一个头文件 *.h, 对模块中的数据结构和函数原型进行描述;另一个为C文件*.C , 对数据实例或对象进行定义,以及函数算法的具体实现,如I2C.C, SPI.C, DAC.C, DISPLAY.C 等...
一、头文件作用 C语言里,每个源文件是一个模块,头文件为使用该模块的用户提供接口。接口指一个功能模块暴露给其他模块用以访问具体功能的方法。 使用源文件实现模块的功能,使用头文件暴露单元的接口。用户只需包含相应的头文件就可使用该头文件中暴露的接口。
C语言里,每个源文件是一个模块,头文件为使用该模块的用户提供接口。接口指一个功能模块暴露给其他模块用以访问具体功能的方法。 使用源文件实现模块的功能,使用头文件暴露单元的接口。用户只需包含相应的头文件就可使用该头文件中暴露的接口。 通过头文件包含的方法将程序中的各功能模块联系起来有利于模块化程序设计:...