以这种方式声明一个函数( bar )之间是否有任何区别:
char *foo(char *pch)
{
extern char *bar(); /* this line here */
...
}
还是这样?
char *foo(char *pch)
{
char *bar(); /* this line here */
...
}
答案 0 :(得分:1)
2011 C标准在6.2.2 / 5中说:
如果函数的标识符声明没有存储类说明符,则其链接的确定方式与使用存储类说明符
extern
声明的完全相同。
所以没有技术差异。
但正如评论中已经指出的那样,两者都被认为是不好的风格。函数声明不属于将使用它的另一个函数。如果您使用该模式并想要更改函数的声明,则需要查找并修改它所使用的所有位置!应在头文件中声明具有外部链接的函数。具有内部链接的函数(使用static
关键字)应该在源文件开头附近声明。