extern是定义还是声明的时候使用
时间: 2024-05-12 07:15:05 浏览: 63
在C语言中,`extern`关键字可以用于声明一个变量或函数,而不是定义它们。具体来说,当我们在一个文件中使用`extern`关键字声明一个变量或函数时,这意味着该变量或函数的定义在另一个文件中,编译器在链接时会去寻找它们的定义。
例如,在文件a.c中定义了一个全局变量`int x = 5;`,在文件b.c中需要使用这个变量,但是不想在b.c中重新定义这个变量,那么我们可以在b.c中使用`extern`关键字进行声明,如下所示:
```
// a.c
int x = 5;
// b.c
extern int x; // 声明 x 变量,告诉编译器 x 的定义在别处
int main() {
printf("%d", x); // 输出 5
return 0;
}
```
需要注意的是,`extern`关键字只能用于全局变量和函数的声明,不能用于局部变量的声明。
相关问题
extern "C"用于声明还是用于定义
`extern "C"`是用于声明一个函数或变量的,它的作用是告诉编译器这个函数或变量按照 C 语言的方式进行链接,而不是 C++ 的方式。在 C++ 中,函数的名称会根据函数的参数类型和个数进行重载,而在 C 语言中,函数的名称不带参数信息,因此使用 `extern "C"` 可以避免函数名重载导致的链接错误。
例如,在 C++ 中,下面两个函数声明会被认为是不同的函数:
```
void foo(int);
void foo(float);
```
而在 C 语言中,这两个函数声明会被认为是相同的函数:
```
void foo(int);
void foo(float); // 会被认为是重复声明
```
因此,如果需要在 C++ 中调用 C 语言编写的函数,需要在函数声明中使用 `extern "C"`,例如:
```
extern "C" void foo(int);
```
这样声明的函数会按照 C 语言的方式进行链接,可以在 C++ 中使用。同时,需要注意的是,`extern "C"`只是声明,不是定义,需要在其他地方进行定义。
extern定义函数
extern关键字主要用于声明外部函数,即在某个文件中声明函数的原型,在另一个文件中定义该函数的具体实现。通过使用extern关键字,可以在一个文件中声明函数,在另一个文件中使用该函数,实现函数的模块化和代码的复用。
下面是extern定义函数的一般格式:
extern 返回类型 函数名(参数列表);
例如,如果在一个文件中声明了一个函数foo()为外部函数:
extern void foo(int a, int b);
那么在另一个文件中,可以使用该函数:
void bar() {
foo(1, 2);
}
通过extern关键字来声明函数,可以让编译器知道在其他文件中存在这个函数的定义,从而避免了函数未定义的错误。同时,也使得代码更加清晰和可维护,方便代码的组织和管理。
阅读全文