c++extern(c++extern 数组)

## C++ extern 详解### 简介`extern` 关键字是 C++ 中一个强大的工具,用于在不同文件和作用域中声明和使用变量、函数以及类。它扮演着桥梁的角色,连接着程序的不同部分,使得代码模块化和复用成为可能。### extern 的作用`extern` 关键字在 C++ 中主要有以下几个作用:#### 1. 声明外部变量

跨文件变量共享:

当你在一个文件中定义了一个全局变量后,希望在其他文件中使用它,就需要在使用该变量的文件中用 `extern` 对其进行声明。```cpp// file1.cppint global_var = 10;// file2.cppextern int global_var; // 声明外部变量int main() {global_var = 20; // 可以访问并修改 file1.cpp 中定义的 global_varreturn 0;}```

避免重复定义:

`extern` 声明告诉编译器,该变量的定义在其他地方,避免了链接时的重复定义错误。#### 2. 声明外部函数

跨文件函数调用:

类似于变量,`extern` 允许你在一个文件中声明另一个文件中定义的函数。```cpp// file1.cppint add(int a, int b) {return a + b;}// file2.cppextern int add(int a, int b); // 声明外部函数int main() {int sum = add(1, 2); // 可以调用 file1.cpp 中定义的 add 函数return 0;}```

函数库链接:

当你使用外部库时,`extern` 声明库中提供的函数,使得你的代码可以调用这些函数。#### 3. 与 C 语言代码交互

C++ 与 C 代码混合编程:

`extern "C"` 用于在 C++ 代码中声明 C 语言的函数或变量,避免 C++ 编译器对函数名进行 name mangling,保证链接成功。```cpp// C 语言头文件 c_functions.h#ifndef C_FUNCTIONS_H#define C_FUNCTIONS_H// 使用 extern "C" 包裹声明,防止 C++ 编译器进行 name mangling#ifdef __cplusplusextern "C" {#endifint c_function(int a);#ifdef __cplusplus}#endif#endif ```### 注意事项

`extern` 声明只是告诉编译器变量或函数的定义在别处,并不分配内存空间。

变量或函数的定义只能出现一次,而 `extern` 声明可以出现多次。

避免循环依赖,即文件 A 依赖文件 B,而文件 B 又依赖文件 A。### 总结`extern` 是 C++ 中用于跨文件和作用域访问变量和函数的重要关键字. 它使得代码模块化、易于维护和复用成为可能, 同时也为 C++ 与 C 代码的混合编程提供了桥梁。

C++ extern 详解

简介`extern` 关键字是 C++ 中一个强大的工具,用于在不同文件和作用域中声明和使用变量、函数以及类。它扮演着桥梁的角色,连接着程序的不同部分,使得代码模块化和复用成为可能。

extern 的作用`extern` 关键字在 C++ 中主要有以下几个作用:

1. 声明外部变量* **跨文件变量共享:** 当你在一个文件中定义了一个全局变量后,希望在其他文件中使用它,就需要在使用该变量的文件中用 `extern` 对其进行声明。```cpp// file1.cppint global_var = 10;// file2.cppextern int global_var; // 声明外部变量int main() {global_var = 20; // 可以访问并修改 file1.cpp 中定义的 global_varreturn 0;}```* **避免重复定义:** `extern` 声明告诉编译器,该变量的定义在其他地方,避免了链接时的重复定义错误。

2. 声明外部函数* **跨文件函数调用:** 类似于变量,`extern` 允许你在一个文件中声明另一个文件中定义的函数。```cpp// file1.cppint add(int a, int b) {return a + b;}// file2.cppextern int add(int a, int b); // 声明外部函数int main() {int sum = add(1, 2); // 可以调用 file1.cpp 中定义的 add 函数return 0;}```* **函数库链接:** 当你使用外部库时,`extern` 声明库中提供的函数,使得你的代码可以调用这些函数。

3. 与 C 语言代码交互* **C++ 与 C 代码混合编程:** `extern "C"` 用于在 C++ 代码中声明 C 语言的函数或变量,避免 C++ 编译器对函数名进行 name mangling,保证链接成功。```cpp// C 语言头文件 c_functions.h

ifndef C_FUNCTIONS_H

define C_FUNCTIONS_H// 使用 extern "C" 包裹声明,防止 C++ 编译器进行 name mangling

ifdef __cplusplusextern "C" {

endifint c_function(int a);

ifdef __cplusplus}

endif

endif ```

注意事项* `extern` 声明只是告诉编译器变量或函数的定义在别处,并不分配内存空间。 * 变量或函数的定义只能出现一次,而 `extern` 声明可以出现多次。 * 避免循环依赖,即文件 A 依赖文件 B,而文件 B 又依赖文件 A。

总结`extern` 是 C++ 中用于跨文件和作用域访问变量和函数的重要关键字. 它使得代码模块化、易于维护和复用成为可能, 同时也为 C++ 与 C 代码的混合编程提供了桥梁。

Powered By Z-BlogPHP 1.7.2

备案号:蜀ICP备2023005218号