为什么main不被声明为extern

Exp*_*ice 3 c

当我们想用一个函数说void foo(void)File1.c我的Main.c[在我的主要功能是-为什么我不需要写:

extern int main(void);

File1.c

假设File1.c并且Main.c处于单一TU中.

AnT*_*AnT 6

您永远不需要extern使用函数声明来编写.函数默认具有外部链接.在一些旧代码中观察到一种奇怪的无法解释的习惯:添加extern到所有外部函数声明.(这可能是导致你提出问题的原因main.)实际上,这完全是不必要的,没有任何目的,只会使代码混乱.

你一定能宣布mainextern,如果你愿意的话.但这完全是多余的.


Oli*_*rth 5

首先,extern默认情况下是函数.

而且,main"特别"; 链接器以不同方式对待它.