开发小新,在看工程代码的时候,发现有些函数在.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关键字, 以防全局名称污染.
多看看就好了, 自己踩几个坑自然就明白了
本回答被题主选为最佳回答 , 对您是否有帮助呢?解决 1无用
悬赏问题
- ¥15 RCS plot 包内置数据集使用时报错,如何解决?
- ¥50 python for 循环优化数据优化
- ¥15 keil+mspm0g3507+二维总线舵机
- ¥15 如何用wireshark分析找出url接口和param参数
- ¥15 有谁知道这是阿里云那个应用的域名吗,怎么调用?
- ¥30 正则表达式的一些问题
- ¥15 C#如何使用ClosedXML库搭配别的库实现:将指定Excel区域导出为图片(例如A1:AO50)
- ¥15 虚拟机只能接收不能发送
- ¥15 为什么echarts极坐标柱形图的图形显示的特别小呢
- ¥20 网络科学导论,网络同步与控制