为什么合法?
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
功能产生影响..