我已经多次看到标题中函数的原型声明在c文件中重复了。
可以在C中多次声明一个函数 - 但它有什么意义呢?是为了更好的可读性还是我缺少一些更深入的见解?
答案 0 :(得分:2)
有可能。这没有任何意义。
但它也不会造成任何伤害。您可以根据需要多次声明一个函数,但每个声明必须与其他声明相同。所以这样做毫无意义。正如有人建议的那样,可能是复制/粘贴错误。
你只能有一个函数定义,它应该总是在c文件中。
这就是你 应该的方式:
作为调用者界面一部分的函数声明应该在h文件中,并且只有。
只能从c文件本身内部获取的本地(私有)函数的函数声明应该在c文件中,并且只在那里。应声明此类函数并将其定义为static
。
答案 1 :(得分:2)
重复的函数声明没有任何有用的语义目的,但由于历史原因,可能由于本地编码约定或其他原因而出现。
例如,可能是本地编码约定,每个源文件中的每个函数都在该文件的开头进行原型化。这有一些小的实用性,例如作为每个文件中定义的函数的清单,并使每个文件中的函数能够忽略关于是否在头文件中声明同一文件中的其他函数的任何问题。
此外,同一功能或对象的多个声明不一定必须相同,它们只需要兼容。在某些情况下,在头文件中提供一个不太具体的原型,在源文件中包含一个更具体的原型包含函数定义(它本身就是另一个声明)可能是有意义的。