为什么合法?
extern int foo = 0xF00; // Gets a warning, still compiles
extern void bar() { // No warning
int x;
}
Run Code Online (Sandbox Code Playgroud)
是否有理由允许这样做?
有时它很有用
extern const int foo = 0xF00;
Run Code Online (Sandbox Code Playgroud)
如果没有extern,在C++ foo中将static会有内部链接(这意味着您无法使用foo其他翻译单元).
将extern在您的示例中这两种情况下是多余的.在C99中,extern可以对inline功能产生影响..