怎么使用extern C
时间: 2024-03-01 11:54:00 浏览: 19
在 C++ 中,extern "C" 是一种指示编译器按照 C 语言规则进行函数命名和链接的方式。在使用 C++ 编译器的情况下,如果一个函数没有使用 extern "C",则编译器会按照 C++ 的命名规则生成函数名。而在 C 语言中,函数名是以 C 语言的方式进行命名的。
如果您需要在 C++ 中调用 C 语言编写的函数,或者将 C++ 编写的函数作为库函数供 C 语言调用,就需要使用 extern "C" 来指定使用 C 语言的命名规则。
下面是一个使用 extern "C" 的示例:
```
#ifdef __cplusplus
extern "C" {
#endif
// C 语言编写的函数声明
void my_c_function(int arg);
#ifdef __cplusplus
}
#endif
```
在上面的示例中,#ifdef __cplusplus 和 #endif 之间的代码将被 C++ 编译器忽略,而在这之间的函数声明则指定了使用 C 语言的命名规则进行编译和链接。
在实际代码中,您只需要在 C 语言函数的声明前加上 extern "C",就可以使用 C 语言的命名规则编译和链接它们了。例如:
```
extern "C" {
void my_c_function(int arg);
}
```
这样,在 C++ 中就可以正确调用 my_c_function 函数了。
相关问题
extern C语言
extern 是 C 语言中的一个关键字,用于声明一个函数或变量是在其他文件中定义的。它可以用来在一个源文件中引用另一个源文件中定义的函数或变量。
当在一个源文件中使用 extern 关键字声明一个函数时,意味着该函数是在另一个源文件中定义的,编译器会在链接阶段将其与实际定义连接起来。
例如,在一个源文件 A.c 中使用 extern 声明一个函数 foo():
extern void foo(); // 函数 foo() 在其他地方定义
然后在另一个源文件 B.c 中定义该函数:
void foo() {
// 函数定义
}
这样,编译器会在链接阶段将 A.c 和 B.c 中的代码连接起来,使得 A.c 中对 foo() 函数的调用能正确执行。
c语言中extern使用
在C语言中,extern关键字用于声明一个变量或函数是在其他文件或模块中定义的。它的作用是告诉编译器该变量或函数在其他文件中定义,编译器在编译时不会对其进行处理,而是在链接时将其与其他文件中的定义进行链接。
下面是两个使用extern关键字的例子:
1. 声明外部函数
假设我们有两个文件,一个是main.c,另一个是func.c,func.c中定义了一个函数show(),我们需要在main.c中调用该函数,就需要使用extern关键字进行声明。
```c
// func.c代码
#include <stdio.h>
void show() {
printf("hello world");
}
// main.c代码
#include <stdio.h>
extern void show(); // 声明外部函数show()
int main() {
show(); // 调用外部函数show()
return 0;
}
```
2. 声明外部变量
假设我们有两个文件,一个是main.c,另一个是var.c,var.c中定义了一个全局变量g_val,我们需要在main.c中使用该变量,就需要使用extern关键字进行声明。
```c
// var.c代码
int g_val = 10;
// main.c代码
#include <stdio.h>
extern int g_val; // 声明外部变量g_val
int main() {
printf("%d", g_val); // 输出外部变量g_val的值
return 0;
}
```