c - 变量/函数可以声明任意次数,但只能定义一次
x = 10;不是一个定义。这是一个任务。您可以根据需要分配任意多次。
int x;是一个定义(同时也是一个声明)。同样,extern int x;是一个声明(没有定义)。为了说明您所询问的概念,以下是有效的 C:
// Duplicate declaration: OK
extern int x;
extern int x;
// Definition: OK
int x;
// int x; // Duplicate definition: ERROR
// Definition with initialisation: OK
int y = 42;
// (Re)assignment: OK inside function.
x = 1;
y = 2;
对于函数,语法是不同的。要声明一个函数,请编写它的原型。要定义它,请添加一个函数体:
// Declaration:
int f(void);
// Also possible, but unnecessary:
extern int f(void);
// Definition:
int f(void) { return 42; }