c++中extern是干什么的
时间: 2023-05-22 18:04:30 浏览: 79
extern在C语言中是用来声明一个在其他文件中定义的变量或函数的关键字。它告诉编译器该变量或函数在当前文件中没有定义,需要在其他文件中寻找它的定义。例如,在一个源文件中使用了某个全局变量,在该文件中使用extern声明该变量,然后在另一文件中定义该全局变量,这样编译器就能够将两个文件正确的链接起来。
相关问题
extern是干嘛的
extern是C/C++中的一个关键字,用于声明一个变量或函数是在其他文件中定义的。通常情况下,如果要在一个文件中使用另一个文件中定义的全局变量或函数,必须在该文件中使用extern关键字进行声明,这样编译器才能够知道该变量或函数在其他文件中的定义,并且不会因为找不到定义而报错。
举个例子,如果在文件A中定义了一个全局变量var,并且要在文件B中使用该变量,那么需要在文件B中使用extern关键字声明该变量,如下所示:
```
// 文件A
int var = 10;
// 文件B
extern int var; // 声明变量var是在其他文件中定义的
```
这样,在文件B中就可以使用变量var了。
1) 什么是c++命名空间 有什么作用? 2) 如何定义使用命名空间?且交代命名空间是否允许嵌套?
1) C++命名空间是一种组织代码的机制,它提供了一种将标识符分组的方式,避免了全局名字空间内标识符冲突的问题。它的主要作用是将一组相关的函数、类和变量集中在一起,通过`namespace`关键字来创建和管理。例如:
```cpp
namespace MyNamespace {
// 在这里定义的所有标识符都属于MyNamespace
int globalVariable;
class MyClass {};
}
```
2) 在C++中定义并使用命名空间,你可以这样做:
```cpp
// 使用命名空间
using namespace MyNamespace; // 如果想在整个文件中使用该命名空间,可以使用此行
// 或者按需导入部分标识符
namespace MyOtherNamespace {
extern int anotherGlobal;
}
using MyOtherNamespace::anotherGlobal;
// 定义命名空间
namespace MyNewNamespace {
void myFunction() {}
}
// 在函数或类声明中明确指定命名空间
void MyOldNamespace::myFunctionInOld() {}
```
至于命名空间的嵌套,是可以的。你可以有像这样的嵌套结构:
```cpp
namespace OuterNamespace {
namespace InnerNamespace {
class NestedClass {};
}
}
```
这样,`NestedClass`就完全位于`OuterNamespace::InnerNamespace`的作用域内。
阅读全文