C++中extern如何使用
时间: 2023-11-29 20:06:14 浏览: 60
在C++中,extern关键字用于声明一个变量或函数是在其他文件中定义的。这样可以在当前文件中使用它,而不需要重新定义它。
在变量声明中,extern表示变量已经在另一个文件中定义,并且在当前文件中只需要声明该变量即可。例如:
```
// File1.cpp
int value = 10;
// File2.cpp
extern int value; // 声明变量value
void func() {
std::cout << value << std::endl; // 在函数中使用变量value
}
```
在函数声明中,extern表示函数已经在另一个文件中定义,并且在当前文件中只需要声明该函数即可。例如:
```
// File1.cpp
void func();
// File2.cpp
void func() {
std::cout << "Hello, World!" << std::endl;
}
```
需要注意的是,在C++中,变量和函数的定义和声明必须分开进行。变量的定义包括初始化,而声明不包括初始化。函数的定义包括函数体,而声明不包括函数体。
相关问题
c++类中使用extern
在C语言中,extern是一个用于声明外部变量和函数的关键字。在类中使用extern,则指的是声明一个外部的类成员或者静态成员。
通常情况下,在C语言中,外部变量和函数的声明可以放在源文件的顶部,这样其他文件就可以使用这些外部的变量和函数了。但在C++中,如果我们想在类中使用外部的变量或者函数,就需要使用extern关键字来进行声明。
在类中使用extern,可以将外部变量或函数声明为类的成员或者静态成员,使得类的其他成员函数可以直接使用它们。这样就可以在类的内部使用外部定义的全局变量,或者调用外部定义的全局函数。
具体的用法是,在类的声明中使用extern关键字来声明一个外部的全局变量或者函数,然后在类的实现中对这个变量或者函数进行定义。这样,类的成员函数就可以直接使用这个被声明为extern的外部变量或函数了。
总结起来,类中使用extern关键字可以让类的成员函数使用外部定义的全局变量或者函数。这样可以增加代码的重用性和灵活性,使得不同的类之间可以共享同一个外部定义的变量或函数。
c++中extern
extern "C"的作用是用于C和C++混合编程时,告诉编译器某个函数是按照C的链接规则进行编译和链接的。在C++中,函数名会经过名称修饰(name mangling)以支持函数重载,而C语言没有函数重载的概念,因此如果想在C++中调用C语言编写的函数,需要用extern "C"来告诉编译器按照C的链接规则处理该函数。
下面是使用extern "C"的一个例子:
// C代码
#ifdef __cplusplus
extern "C" {
#endif
int add(int a, int b);
#ifdef __cplusplus
}
#endif
// C++代码
#include <iostream>
extern "C" {
#include "mylib.h"
}
int main() {
int result = add(3, 4);
std::cout << "Result: " << result << std::endl;
return 0;
}
相关推荐
![pdf](https://img-home.csdnimg.cn/images/20210720083512.png)
![pdf](https://img-home.csdnimg.cn/images/20210720083512.png)
![pdf](https://img-home.csdnimg.cn/images/20210720083512.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)