c++中 extern
时间: 2024-10-31 15:08:30 浏览: 21
在C++中,`extern`是一个关键字,用于声明变量、函数或者类的存在,但是不提供它们的具体定义。当你在一个源文件中声明了一个`extern`变量,而在另一个文件中定义了它,这允许你在多个源文件之间共享相同的标识符,实现在链接阶段的合并。
以下是`extern`的一些常见用法:
1. **声明外部变量**:如果你在头文件中声明一个变量(如全局变量),但在实现文件(cpp文件)中未定义,需要在那个cpp文件中加上`extern`声明该变量已经存在。
```cpp
// header.h
extern int globalVar;
// source.cpp
int globalVar = 42;
```
2. **静态全局变量**:如果希望在整个程序中只有一份副本,可以将`static`与`extern`一起使用。
3. **函数声明和定义分离**:在某个文件里声明函数,然后在其他文件里提供实现。
```cpp
// file1.h
extern void someFunction();
// file1.cpp
void someFunction() {
// implementation here
}
```
相关问题
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;
}
c++中externc
在C++中,extern "C"用于声明或定义C语言符号,以便与C兼容。它可以防止C++编译器对函数名进行修饰,从而使得C++代码可以调用C语言编写的函数。下面是一个示例:
```cpp
#ifdef __cplusplus
extern "C" {
#endif
void func(); // 声明一个C语言函数
#ifdef __cplusplus
}
#endif
```
在上面的示例中,我们使用了条件编译来确保只有在C++环境下才会使用extern "C"。这样做是为了避免在C语言环境下出现编译错误。
阅读全文