为什么extern可以应用于定义?

Pub*_*bby 9 c c++ extern

为什么合法?

extern int foo = 0xF00; // Gets a warning, still compiles

extern void bar() { // No warning
  int x;
}
Run Code Online (Sandbox Code Playgroud)

是否有理由允许这样做?

Joh*_*itb 7

有时它很有用

extern const int foo = 0xF00;
Run Code Online (Sandbox Code Playgroud)

如果没有extern,在C++ foo中将static会有内部链接(这意味着您无法使用foo其他翻译单元).

extern在您的示例中这两种情况下是多余的.在C99中,extern可以对inline功能产生影响..