(1.21)思考题
Posted cyn522
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了(1.21)思考题相关的知识,希望对你有一定的参考价值。
(1.21)为什么C语言要分. h和. c文件,这样有什么好处?
(1)能不能把函数及变量的声明放在源文件里?
(2)能不能把函数和变量的定义放在头文件里?
(3)能不能在两个头文件里都声明同一个函数或者变量?
(4)能不能在两个源文件里都定义同一个函数或者变量?
回答:
(1.21)为什么C语言要分. h和. c文件,这样有什么好处?
.h文件是头文件,内含函数声明、宏定义、结构体定义等内容,.c文件是源程序文件,内含函数实现,变量定义等内容。编译器会默认对某些后缀的文件采取某些动作。分为.c文件和.h文件有利于在实际中做工程时实现优化代码和便于后期维护的目的。
好处:
①方便:包含一些文件需要的共同的常量,结构,类型定义,函数,变量声明等。如果在一个.c文件中声明结构体、函数等,在另一个.c文件中引用相应的结构体等就必须再做一次重复工作。而将这些放在一个头文件中,.c文件中需要就直接引用头文件,更加方便。
②.h文件提供给外界的接口
③使用代码一种是直接通过源代码,一种是通过头文件。.h文件可以免于公布源代码,可以让使用者通过函数原型等使用。
④.h文件可以加强类型安全检查:如果某个接口被实现或被使用时,其方式与头文件中的声明不一致,编译器就会指出错误,这能减轻程序员调试、改错的负担
⑤减少初学者学习难度:初学者在编程中要实现某一功能可以通过已有的库函数直接调用,不必十分了解怎么写该函数
(1)我认为可以把声明放在源文件里。因为声明与定义的区别在于是否有初始化,初始化之后就是定义,声明没有给变量分配存储空间。而且在本源文件中是可以使用另一源文件中已声明的变量或函数等,说明声明是可以被放在源文件里的。
(2)我认为不能把函数和变量的定义放在头文件里。因为头文件可能会被多个源文件包含,如果把函数和变量的定义放在头文件中,可能会导致多重定义,所以不能把函数和变量的定义放在头文件里。
(3)我认为在一个源文件同时包含这两个头文件的情况下,如果这个函数或变量没有被使用的话,那么在两个头文件中都声明并没有太大关系,而且并不占存储空间;但如果这个函数或变量在源文件中有被初始化,有被使用的话,有可能在查找时同时查找到两个头文件,有可能会导致重复定义。
(4)我认为不能在两个源文件里都定义同一个函数或者变量。因为如果两个源文件都定义同一个函数或者变量,在编译的时候正常编译,但是在链接的时候会有两个地方,导致编译器无法识别应该是哪一个,导致链接错误,所以不能在两个源文件里都定义同一个函数或者变量。
以上是关于(1.21)思考题的主要内容,如果未能解决你的问题,请参考以下文章