《c陷阱与缺陷》4-6章笔记

本文详细介绍了C语言中关于连接、库函数使用、预处理器操作以及可移植性方面的常见陷阱和缺陷。强调了extern关键字的使用规则,库函数调用时的数据类型匹配,预处理器宏定义的注意事项,以及如何提升代码的可移植性。建议开发者在编程时注意函数返回值的检查,避免宏展开导致的副作用,并适当地使用typedef增强代码的可读性和可移植性。
摘要由CSDN通过智能技术生成

连接

1、extern 关键字表示对外部对象的引用,其定义只能在程序的某个地方进行,且只能定义一次。另外尽量少使用extern多处引用外部变量,如若干个函数需要共享一组外部对象,可以将这些函数放到一个源文件中,把需要用到的对象也放在同一个源文件中以static修饰符声明,static修饰符可以起到减少命名冲突的作用,函数也一样。

2、如果一个函数在被定义或声明之前被调用,那么它的返回类型默认就是整型,因此在函数调用前就定义或声明所要使用的函数,同时确保其声明的类型是一致的。

3、处理多文件多次声明的问题,比较好的方法是将需要用到的外部对象的所有模块放到头文件中,当需要用到的时候,包含这个头文件即可。


库函数

1、对库函数返回的数据类型、参数类型要清楚,否则会出现“截断”,整型溢出等情况。
比如参数需要的是一个负数,而参入的是sizeof操作表达式,其返回的unsigned值,则必须先将其转换称有符号数再将其反号

2、如要对某个文件同时进行输入和输出操作,必须在其中插入fseek函数的调用,以改变文件的状态。网上有具体分析

3、如要对标准输入输出缓存一定数据量再进行实际操作,可通过setbuf函数实现,直到其缓冲区填满或直接调用fflush。平时调试打印信息如printf注意是否以‘\n’结尾,否则会先缓存直到遇到换行符或缓冲区满才输出打印。

4、警惕函数返回局部声明的数组数据,其在函数退出时,会释放数组内容。如缓冲区是动态分配的,不能忘记最后要释放该缓冲区。<

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值