在 C++ 中多次声明函数和变量
Declaring functions and variables multiple times in C++
在 C++ 中,多次声明一个变量会在编译期间显示错误。例如:
int x;
int x;
虽然多次声明一个函数在编译过程中没有显示任何错误。例如:
int add(int, int);
int add(int, int);
为什么在 C++ 中有这种区别?
注意 int x;
不是(只是) declaration, it's definition. So error arisen since ODR 是违反的,即在一个翻译单元中只允许一个定义。
变量声明可以写成:
// a declaration with an extern storage class specifier and without an initializer
extern int x;
extern int x;
同时int add(int, int);
正是一个(函数的)声明。一个翻译单元中的多个声明可以,不违反ODR。
在 C++ 中,多次声明一个变量会在编译期间显示错误。例如:
int x;
int x;
虽然多次声明一个函数在编译过程中没有显示任何错误。例如:
int add(int, int);
int add(int, int);
为什么在 C++ 中有这种区别?
注意 int x;
不是(只是) declaration, it's definition. So error arisen since ODR 是违反的,即在一个翻译单元中只允许一个定义。
变量声明可以写成:
// a declaration with an extern storage class specifier and without an initializer
extern int x;
extern int x;
同时int add(int, int);
正是一个(函数的)声明。一个翻译单元中的多个声明可以,不违反ODR。