extern声明和函数定义都在同一个文件中

我只是浏览 gcc文件.在 gcc.c中,我发现了类似的东西
extern int main (int,char **);

int
main (int argc,char **argv)
{

现在我的怀疑是extern是告诉编译器,特定的功能在这文件,但会被发现在项目的其他地方.但在这里,main的定义是在extern声明之后.那么外部宣言的目的是什么呢?

看来,在这个具体的例子中,extern似乎像在汇编中使用的export一样,我们在模块之外导出一个特定的符号

有任何想法吗?

解决方法

你误解了extern – 它不会告诉编译器的定义是在另一个文件中,它只是声明它存在而不定义它.在同一个文件中定义它是完全可行的.

C有声明的概念(声明某事物不存在定义)和定义(实际上使其存在).您可以随意声明一些东西,但只能定义一次.

因为认情况下,函数具有外部链接,所以在这种情况下,extern关键字是无关紧要的.

相关文章

本程序的编译和运行环境如下(如果有运行方面的问题欢迎在评...
水了一学期的院选修,万万没想到期末考试还有比较硬核的编程...
补充一下,先前文章末尾给出的下载链接的完整代码含有部分C&...
思路如标题所说采用模N取余法,难点是这个除法过程如何实现。...
本篇博客有更新!!!更新后效果图如下: 文章末尾的完整代码...
刚开始学习模块化程序设计时,估计大家都被形参和实参搞迷糊...