开发小新,在看工程代码的时候,发现有些函数在.c文件中定义了函数主体以后,在.h文件中进行了声明(不在其他.c文件中调用),而有些函数在.c文件中定义了之后却没有在.h文件中声明,这是为什么?声明与不声明有什么不同吗?
4条回答 默认 最新
不停感叹的老林_<C 语言编程核心突破> 2023-08-25 19:40关注有些函数在.c文件中定义了函数主体以后,在.h文件中进行了声明(不在其他.c文件中调用),而有些函数在.c文件中定义了之后却没有在.h文件中声明,这是为什么?
声明与不声明有什么不同吗?
你看的是工程代码, 那么这里的函数声明就非常的讲究了.
单文件小练习, 无需考虑, 用不用头文件单独声明都是可以的.
多文件工程, 则需要组织文件, 情况比较复杂
a. 需要在多个文件调用的函数, 定义在C文件, 声明在.h文件, 在没有定义函数的文件中, 通过include头文件, 可以调用函数, 这个简单.
b. 不需要跨文件调用的函数, 定义在C文件, 声明.h文件, 或不声明.h文件都可以, 但如果不在.h文件中声明, 那么.c文件中函数的相互调用, 一定要遵循先后顺序, 通常也会先在最开始统一声明, 最后进行定义, 防止某个函数调用一个在其定义以后才声明的函数, 这个是不合法的.
c. 对于上一种情况, 对于非跨文件的函数, 请务必使用static关键字, 以防全局名称污染.
多看看就好了, 自己踩几个坑自然就明白了
本回答被题主选为最佳回答 , 对您是否有帮助呢?评论 打赏 举报 编辑记录解决 2无用