在C++中,extern关键字是一个十分重要的关键字,它的作用是告诉编译器某个变量或函数是在其他文件中定义的,而不是在当前文件中定义的。本文将从以下几个方面介绍C++中extern关键字的用法及注意事项。
一、extern关键字的基本用法
在C++中,extern关键字可以用于变量和函数的声明。对于变量,我们可以在当前文件中使用extern关键字来声明一个在其他文件中定义的变量,以便在当前文件中使用该变量。例如:
```c++
//file1.cpp
int count = 0;
//file2.cpp
extern int count;
```
在上述代码中,我们在file1.cpp中定义了一个count变量,而在file2.cpp中使用extern关键字声明了该变量,以便在file2.cpp中使用该变量。这样,在file2.cpp中就可以使用count变量了。
对于函数,我们也可以使用extern关键字来声明一个在其他文件中定义的函数,以便在当前文件中使用该函数。例如:
```c++
//file1.cpp
void print();
//file2.cpp
extern void print();
```
在上述代码中,我们在file1.cpp中定义了一个print函数,而在file2.cpp中使用extern关键字声明了该函数,以便在file2.cpp中使用该函数。这样,在file2.cpp中就可以使用print函数了。
二、extern关键字的注意事项
在使用extern关键字时,需要注意以下几点:
1. extern关键字只是声明一个变量或函数,在实际使用时仍需要在当前文件中定义该变量或函数。例如:
```c++
//file1.cpp
extern int count = 0; //在这里定义count变量
//file2.cpp
extern int count; //在这里声明count变量
```
在上述代码中,我们在file1.cpp中定义了count变量,并使用extern关键字声明了该变量,以便在file2.cpp中使用该变量。需要注意的是,在定义count变量时,也需要使用extern关键字。
2. 在使用extern关键字声明变量时,不要初始化该变量。例如:
```c++
//file1.cpp
int count = 0;
//file2.cpp
extern int count = 1; //错误的做法,不要在这里初始化count变量
extern int count; //正确的做法,只需要声明count变量即可
```
在上述代码中,我们在file1.cpp中定义了count变量,并在file2.cpp中使用extern关键字声明了该变量。需要注意的是,在使用extern关键字声明变量时,不要初始化该变量。
3. 在使用extern关键字声明函数时,需要保证函数的参数类型和返回类型与实际定义的函数一致。例如:
```c++
//file1.cpp
void print(int num);
//file2.cpp
extern void print(double num); //错误的做法,参数类型不一致
extern void print(int num); //正确的做法,参数类型一致
```
在上述代码中,我们在file1.cpp中定义了print函数,并在file2.cpp中使用extern关键字声明了该函数。需要注意的是,在使用extern关键字声明函数时,需要保证函数的参数类型和返回类型与实际定义的函数一致。
三、extern关键字的高级用法
除了基本用法外,extern关键字还有一些高级用法,包括:
1. 在头文件中使用extern关键字
在C++中,通常将函数的声明放在头文件中,以便在多个文件中使用该函数。例如:
```c++
//print.h
void print(int num);
//file1.cpp
void test()
{
print(10);
}
//file2.cpp
void test()
{
print(20);
}
```
在上述代码中,我们将print函数的声明放在了print.h头文件中,并在file1.cpp和file2.cpp中分别使用了该函数。需要注意的是,在头文件中使用extern关键字声明函数时,不需要使用extern关键字。
2. 在多个文件中使用同一变量
在C++中,有时需要在多个文件中使用同一变量,可以使用extern关键字来实现。例如:
```c++
//count.h
extern int count;
//file1.cpp
void test()
{
count++;
}
//file2.cpp
void test()
{
count--;
}
```
在上述代码中,我们将count变量的声明放在了count.h头文件中,并在file1.cpp和file2.cpp中分别使用了该变量。需要注意的是,在使用同一变量时,需要保证变量的类型和名称一致。
3. 在C++中使用C语言库函数
在C++中,可以使用C语言库函数,但需要使用extern "C"关键字来告诉编译器该函数是C语言函数。例如:
```c++
//file1.cpp
extern "C" {
}
void test()
{
printf("Hello, world!");
}
```
在上述代码中,我们使用了C语言库函数printf,并使用extern "C"关键字告诉编译器该函数是C语言函数。需要注意的是,在使用C语言库函数时,需要使用extern "C"关键字。
四、总结
本文介绍了C++中extern关键字的基本用法及注意事项,包括变量和函数的声明、不要初始化变量、保证函数参数类型一致等。此外,本文还介绍了extern关键字的高级用法,包括在头文件中使用extern关键字、在多个文件中使用同一变量、在C++中使用C语言库函数等。需要注意的是,在使用extern关键字时,需要保证变量和函数的类型、名称、参数类型和返回类型一致。
本文转载自互联网,如有侵权,联系删除