在 C 中多次声明一个函数有什么意义?
What sense does it make to declare a function more than one time in C?
我见过几次头文件中函数的原型声明在 c 文件中完全重复。
在 C 语言中可以多次声明一个函数 - 但它有什么意义呢?仅仅是为了更好的可读性还是我缺少一些更深入的见解?
有可能。没有任何意义。
但它也不会造成任何伤害。您可以根据需要多次声明一个函数,但每次这样的声明都必须与其他声明相同。所以这样做是没有意义的。正如有人建议的那样,这可能是一个 copy/paste 错误。
虽然你只能有一个函数定义,它应该总是在 c 文件中。
您应该这样做:
作为调用者接口的一部分的函数声明应该在 h 文件中,而且只有那里。
只能在 c 文件本身内部使用的局部(私有)函数的函数声明应该在 c 文件中,而且只能在那里。此类函数应声明并定义为 static
.
重复函数声明没有任何语义目的,但它们可能由于历史原因、本地编码约定或某些其他原因而出现。
例如,每个源文件中的每个函数都在该文件的开头进行原型化,这可能是一种本地编码约定。这有一些小的实用性,例如作为每个文件中定义的函数的清单,并使每个文件中的函数能够忽略任何关于同一文件中的其他函数是否在 header 中声明的问题.
此外,同一函数或object的多个声明不一定相同,它们只需要兼容。在某些情况下,在 header 中提供一个不太具体的原型并在包含函数定义(它本身作为另一个声明)的源文件中提供一个更具体的原型可能是有意义的。
我见过几次头文件中函数的原型声明在 c 文件中完全重复。
在 C 语言中可以多次声明一个函数 - 但它有什么意义呢?仅仅是为了更好的可读性还是我缺少一些更深入的见解?
有可能。没有任何意义。
但它也不会造成任何伤害。您可以根据需要多次声明一个函数,但每次这样的声明都必须与其他声明相同。所以这样做是没有意义的。正如有人建议的那样,这可能是一个 copy/paste 错误。
虽然你只能有一个函数定义,它应该总是在 c 文件中。
您应该这样做:
作为调用者接口的一部分的函数声明应该在 h 文件中,而且只有那里。
只能在 c 文件本身内部使用的局部(私有)函数的函数声明应该在 c 文件中,而且只能在那里。此类函数应声明并定义为
static
.
重复函数声明没有任何语义目的,但它们可能由于历史原因、本地编码约定或某些其他原因而出现。
例如,每个源文件中的每个函数都在该文件的开头进行原型化,这可能是一种本地编码约定。这有一些小的实用性,例如作为每个文件中定义的函数的清单,并使每个文件中的函数能够忽略任何关于同一文件中的其他函数是否在 header 中声明的问题.
此外,同一函数或object的多个声明不一定相同,它们只需要兼容。在某些情况下,在 header 中提供一个不太具体的原型并在包含函数定义(它本身作为另一个声明)的源文件中提供一个更具体的原型可能是有意义的。