Kus*_*ali 6 c++ declaration definition one-definition-rule
在C++中,多次声明变量会在编译期间显示错误.例如:
int x;
int x;
Run Code Online (Sandbox Code Playgroud)
在多次声明函数时,编译期间不会显示任何错误.例如:
int add(int, int);
int add(int, int);
Run Code Online (Sandbox Code Playgroud)
为什么在C++中有这种区别?
son*_*yao 14
注意,这int x;不是(仅)声明,它的定义.因此,由于ODR被违反而出现错误,即在一个翻译单元中仅允许一个定义.
变量声明可以写成:
// a declaration with an extern storage class specifier and without an initializer
extern int x;
extern int x;
Run Code Online (Sandbox Code Playgroud)
在此期间int add(int, int);,确切地说是一个声明(功能).一个翻译单元中的多个声明很好,不会违反ODR.