c/c++中extern应用举例
时间: 2023-04-12 16:01:22 浏览: 148
当在一个源文件中使用 extern 关键字声明一个变量或函数时,它表示该变量或函数在其他源文件中定义。举个例子,如果在一个源文件中声明了一个全局变量,但是在另一个源文件中定义了该变量,那么在第一个源文件中使用该变量时,就需要使用 extern 关键字来声明该变量。例如:
// file1.c
extern int global_var;
int main() {
global_var = 10;
return 0;
}
// file2.c
int global_var;
在上面的例子中,file1.c 中使用了 extern 关键字来声明 global_var 变量,因为它在 file2.c 中定义。
相关问题
extern 变量 用法 举例
`extern`是C/C++语言的关键字,用于声明变量或者函数但是不提供其实际定义。当你在一个文件中声明了一个变量,并使用`extern`关键字,那么这个变量实际上是在另一个文件中定义的。这种用法主要用于实现模块化和链接共享。
例如:
```c
// file1.h
extern int globalVariable;
// file1.c
int globalVariable = 0; // 实际的变量定义
// file2.c
#include "file1.h"
// 在这里我们不需要再次声明globalVariable,因为我们已经通过extern指出了它在其他地方被定义
void someFunction() {
printf("Global variable: %d\n", globalVariable); // 使用extern引用的全局变量
}
```
在这个例子中,`file1.h`中声明了`globalVariable`,但在`file1.c`中进行了初始化。在`file2.c`中,虽然没在当前文件里定义,但我们仍可以正常访问和操作这个变量,因为`extern`告诉编译器它会在某个位置找到实际的定义。
动态库中使用c++模板,并用c++举例
动态链接库 (DLL) 中使用 C++ 模板通常是为了提供通用的功能或数据结构,使得其他程序可以灵活地调用这些功能而无需关心其底层实现。由于模板在编译时展开成特定类型的实例,所以即使在 DLL 中,只要模板类型参数在使用时是确定的,编译器就能生成对应的代码。
比如,我们可以创建一个模板函数,用于计算任意类型数值的平方,然后把它放入一个 DLL 中:
```cpp
template <typename T>
T square(T value) {
return value * value;
}
// 将这个函数声明为 DLL 的公共接口
extern "C" __declspec(dllexport) double dll_square(double value);
extern "C" __declspec(dllexport) int dll_square(int value);
dll_square(4.0); // 调用 DLL 提供的 double 版本
dll_square(5); // 调用 DLL 提供的 int 版本
```
在这个例子中,`dll_square` 函数实际上是模板 `square` 的两个实例,分别针对 `double` 和 `int` 类型。
阅读全文