为什么要编译是否使用"extern"?

wp2*_*wp2 1 c++ compilation

在a.cpp中:

int t()
{
  //definition goes here
  ...
}
Run Code Online (Sandbox Code Playgroud)

b.cpp:

#include "a.h"

int main()
{
  t();
}
Run Code Online (Sandbox Code Playgroud)

终于啊:

extern int t();
//int t();
Run Code Online (Sandbox Code Playgroud)

两种形式的啊工作,为什么?

Lie*_*yan 9

因为默认情况下函数是extern,所以extern关键字是多余的.有些人喜欢明确添加extern,当他们想暗示其他开发人员在.cpp文件中找不到该函数的定义而不是这个.h文件,然后他们添加注释指向函数的位置被宣布.但从编译器的角度来看,它不会影响任何东西.

  • 变量的工作方式不同,@ Wp2.如果没有`extern`,你将在包含*ah*的每个单元中有一个新的`j`定义.在您显示的代码中,您只在*b.cpp*中包含该文件一次,但如果您将其包含在其他任何地方,那么您将拥有*多个定义*,C++禁止使用,但不需要编译器抱怨它. (2认同)