本人曾经认为,一个.c文件对应一个.h文件,.c文件只包含它自身的.h文件就好,若.c文件中用到其他文件中的内容,则.h文件把用到的头文件包含进来就可以了。 这种思想在项目代码量小,工程文件少时貌似看不出问题,但随着工程文件数量越来越多,我发现了这种思想存在弊端:头文件互相包含,导致编译时自以为有些宏变量声明...
C语言头文件互引用是指两个或多个头文件相互包含的情况。在C语言中,头文件是扩展名为.h的文件,包含了C函数声明和宏定义,被多个源文件中引用共享。 一、头文件互引用会导致以下问题: 1.编译错误:如果两个头文件互相包含,会导致编译器无法确定哪个头文件应该先被包含,从而导致编译错误。 2.重复定义:如果两个头...
应该秉承.c文件对应的.h文件只包含头文件里用到的其它文件的头文件,任何非必须的.h文件不要包含;而.c文件里面要包含用到的所有.h文件。这样写即使存在.c文件内头文件重复包含也不伤大雅。 语言描述有时太抽象,还是符号举例说明下:假如有两个.c文件分别为A.c和B.c,自然它们都有各自的A.h和B.h文件。
// test.h 告诉预编译器只包含一次#pragmaonce 1. 2. 2、避免重复定义 不要将函数定义放置在头文件里面,正确的做法是头文件放置函数声明,源文件放置函数定义。因为源文件是分别编译的,假如头文件放置了函数定义,包含该头文件的每一个源文件都会定义相应的函数,从而导致重复定义。但是几种情况可以例外:内联函数的...
原则2.2.3用#include“filename.h”格式来引用非标准库的头文件(编译器将从用户的工作目录开始搜索)。 原则2.2.4头文件中只存放“声明”而不存放“定义”。 原则2.2.5头文件中应包含所有定义文件所定义的函数声明,如果一个头文件对应多个定义文件,则不同定义文件内实现的函数要分开声明,并作注释以解释所声明的函...
1. 如何解决两个头文件互相引用的问题? 当两个头文件互相引用时,可能会导致循环依赖问题,这可能在编译错误或未定义的符号错误中表现出来。为了解决这个问题,可以采取以下几种方法: 使用前置声明:前置声明是一种提前声明某个类型而无需包含它的头文件的方式。通过使用前置声明,可以避免循环引用问题。在一个头文件中,...
在C语言编程中,一个.c文件通常对应一个.h文件,.c文件只包含自身的.h文件,而其他的头文件则通过.h文件进行包含。这种方式在项目代码量小,工程文件少时看似并无问题。但随着工程文件数量的增加,这种思想就会出现问题。头文件互相包含,可能会导致编译时自以为有些宏变量声明了,它就能起作用,但实际...
不会。C语言鼓励模块化编程。头文件太多,互相包含,容易出现一些难以处理的BUG,但是不会影响程序的效率,最多造成编译速度变慢。
而条件编译的出现,就可以按照条件选择性省略掉一部分无用的代码,生成不同的目标文件,从而提高了程序的可移植性和灵活性。 同时,条件编译还有一个最大的作用,避免头文件重复引用的问题。头文件之间可能会存在互相包含的关系,如果不预先处理,是会让编译器产生报错的。