extern "C"用于声明还是用于定义
时间: 2023-07-08 08:54:26 浏览: 74
`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是定义还是声明的时候使用
在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`关键字只能用于全局变量和函数的声明,不能用于局部变量的声明。
c语言中extern定义的具体用法
extern在C语言中用于声明一个全局变量或函数的外部链接性,表示该变量或函数在其他文件中定义。具体用法如下:
1. 外部变量声明:当在一个文件中使用其他文件中定义的全局变量时,需要在当前文件中使用extern进行声明。例如,如果有一个全局变量在文件1.c中定义,可以在文件2.c中使用extern进行声明,并且可以直接访问该变量。
文件1.c:
```c
int globalVar = 10;
```
文件2.c:
```c
extern int globalVar;
int main() {
printf("%d\n", globalVar); // 输出10
return 0;
}
```
2. 外部函数声明:当在一个文件中调用其他文件中定义的函数时,需要在当前文件中使用extern进行声明。例如,如果有一个函数在文件1.c中定义,可以在文件2.c中使用extern进行声明,并且可以直接调用该函数。
文件1.c:
```c
void func() {
printf("Hello, World!\n");
}
```
文件2.c:
```c
extern void func();
int main() {
func(); // 输出 Hello, World!
return 0;
}
```
总之,extern的作用是告诉编译器某个变量或函数的定义在其他文件中,以便在当前文件中使用。