Pav*_*ath 11 c declaration extern function-declaration
我只是浏览gcc源文件.在gcc.c,我发现了类似的东西
extern int main (int, char **);
int
main (int argc, char **argv)
{
Run Code Online (Sandbox Code Playgroud)
现在我的疑问是extern告诉编译器特定的函数不在这个文件中,但是会在项目的其他地方找到.但是在这里,定义main是在extern声明之后立即.extern宣言服务的目的是什么?
看起来,在这个具体的例子中, extern似乎表现得像export我们在汇编中使用的那样,我们在模块之外输出一个特定的符号
有任何想法吗?
pax*_*blo 14
你误解了extern- 它没有告诉编译器定义是在另一个文件中,它只是声明它存在而不定义它.在同一个文件中定义它是完全可以的.
C具有声明的概念(声明存在而不定义它的东西)和定义(实际上使它存在).您可以根据需要随意声明某些内容,但只能定义一次.
由于默认情况下函数具有外部链接,因此extern在这种情况下关键字无关紧要.