将函数声明为extern

时间:2017-09-04 16:41:31

标签: c extern

以这种方式声明一个函数( bar )之间是否有任何区别:

char *foo(char *pch)
{
    extern char *bar(); /* this line here */
    ...
}

还是这样?

char *foo(char *pch)
{
    char *bar(); /* this line here */
    ...
}

1 个答案:

答案 0 :(得分:1)

2011 C标准在6.2.2 / 5中说:

  

如果函数的标识符声明没有存储类说明符,则其链接的确定方式与使用存储类说明符extern声明的完全相同。

所以没有技术差异。

但正如评论中已经指出的那样,两者都被认为是不好的风格。函数声明不属于将使用它的另一个函数。如果您使用该模式并想要更改函数的声明,则需要查找并修改它所使用的所有位置!应在头文件中声明具有外部链接的函数。具有内部链接的函数(使用static关键字)应该在源文件开头附近声明。

相关问题