gpt4 book ai didi

c - 函数原型(prototype)应该总是在它的头文件中吗?

转载 作者:太空狗 更新时间:2023-10-29 14:57:11 26 4
gpt4 key购买 nike

假设我们有一些 C 源文件,例如 file1.cfile2.cmain.c。我们有以下功能:

file1.c
|---> file1Func1()
|---> file1Func2()

file2.c
|---> file2Func1()
|---> file2Func2()

主文件使用这些函数。现在我很自然地在头文件 file1.hfile2.h 中创建和添加相应的函数原型(prototype),然后将这些头文件包含在 main.c 使用函数。

如果我有一个包含超过一千个源 (C) 文件的非常大的项目,我是否应该始终为每个源文件创建一个 header (然后添加函数原型(prototype))?然后包含标题以使用这些功能?

或者使用 extern 来使用在别处(在其他源文件中)定义的函数并依赖链接器在链接时从目标文件中搜索和获取函数?

注意:使用后一种方法会触发没有函数原型(prototype)的 MISRA 警告。

最佳答案

作为接口(interface)一部分的所有函数,即被另一个模块调用的函数,都应该在头文件中有函数原型(prototype)。最好连同说明该功能应如何使用的注释一起使用。

不属于接口(interface)且仅在文件内部使用的函数不应该在标题中有原型(prototype)。对于此类函数,在c文件的顶部声明原型(prototype),并将其声明为static

这就是所有(专业)C 程序的编写方式。附带说明一下,MISRA-C 也需要这种声音设计。

您永远不应该为函数使用 extern 关键字。请注意,像这样的函数原型(prototype)

void func (void);

完全等同于

extern void func (void);

如果您需要使用某个函数,请包含相关的标题。

关于c - 函数原型(prototype)应该总是在它的头文件中吗?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/36076152/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com