大帅的bk 2023-08-25 11:26 采纳率: 100%
浏览 17
已结题

函数在.h文件中一定要声明吗?

开发小新,在看工程代码的时候,发现有些函数在.c文件中定义了函数主体以后,在.h文件中进行了声明(不在其他.c文件中调用),而有些函数在.c文件中定义了之后却没有在.h文件中声明,这是为什么?声明与不声明有什么不同吗?

  • 写回答

4条回答 默认 最新

  • 关注

    有些函数在.c文件中定义了函数主体以后,在.h文件中进行了声明(不在其他.c文件中调用),而有些函数在.c文件中定义了之后却没有在.h文件中声明,这是为什么?
    声明与不声明有什么不同吗?


    你看的是工程代码, 那么这里的函数声明就非常的讲究了.


    单文件小练习, 无需考虑, 用不用头文件单独声明都是可以的.


    多文件工程, 则需要组织文件, 情况比较复杂


    a. 需要在多个文件调用的函数, 定义在C文件, 声明在.h文件, 在没有定义函数的文件中, 通过include头文件, 可以调用函数, 这个简单.


    b. 不需要跨文件调用的函数, 定义在C文件, 声明.h文件, 或不声明.h文件都可以, 但如果不在.h文件中声明, 那么.c文件中函数的相互调用, 一定要遵循先后顺序, 通常也会先在最开始统一声明, 最后进行定义, 防止某个函数调用一个在其定义以后才声明的函数, 这个是不合法的.


    c. 对于上一种情况, 对于非跨文件的函数, 请务必使用static关键字, 以防全局名称污染.


    多看看就好了, 自己踩几个坑自然就明白了

    本回答被题主选为最佳回答 , 对您是否有帮助呢?
    评论 编辑记录
查看更多回答(3条)

报告相同问题?

问题事件

  • 系统已结题 9月4日
  • 已采纳回答 8月27日
  • 创建了问题 8月25日

悬赏问题

  • ¥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 网络科学导论,网络同步与控制