C语言头文件详解

本文详细介绍了C语言中头文件的管理,特别是如何避免重复包含问题。通过使用#ifndef, #define, #endif预处理指令防止头文件被多次包含导致的编译错误。同时,强调了在头文件中不应定义全局变量,以防止链接时出现重定义错误。总结了在编写头文件时的注意事项和最佳实践。" 52176259,5613928,测试硬盘IO性能:从困境到解决方案,"['数据库', '测试', '硬盘', '服务器']
摘要由CSDN通过智能技术生成

1. GCC编译时问题

在由多个C语言文件组成的程序中,对于头文件的管理非常重要。头文件提供给用户一个接口,用户从中可以知道可以调用哪些函数,实现哪些功能,而不必去管这些功能的具体实现。因此,写好头文件是非常关键的。在头文件中,最常见的问题是"头文件的重复包含"。其意思是同一头文件被源文件包含多次。例如,定义了头文件test1.h和test2.h,其中test2.h包含test1.h,在test3.c中包含了test2.h,那么会造成test3.c对test1.h包含两次,导致重复包含问题。如果在test1.h定义了变量,在gcc编译时就会报"变量重复定义"错误。注意:这里是gcc编译错误。gcc编译过程和链接过程是不相同的过程。在这里需要使用下面的宏进行定义:

#ifndef _TEST1_H_
#define _TEST1_H_
/*头文件内容*/
#endif

解释: 这三条指令是预处理指令,表示如果没有定义_TEST1_H_,就定义_TEST1_H_.

为了说明它的作用,以test1.h, test2.h和test3.c为例子,当test3.c包含test1.h和test2.h会出现下面的情形:

#ifndef _TEST1_H_
/*头文件内容*/
#define _TEST1_H_
#endif
#ifndef _TEST1_H_
/*头文件内容*/
#define _TEST1_H_
#endif

第1次,由于没有定义_TEST1_H_,所以进行定义。当定义_TEST1_H_后,ifnde

  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值