C++中extern关键字的用法及注意事项

软件教程 2023.09.06 105
本文目录一览

在C++中,extern关键字是一个十分重要的关键字,它的作用是告诉编译器某个变量或函数是在其他文件中定义的,而不是在当前文件中定义的。本文将从以下几个方面介绍C++中extern关键字的用法及注意事项。

一、extern关键字的基本用法

在C++中,extern关键字可以用于变量和函数的声明。对于变量,我们可以在当前文件中使用extern关键字来声明一个在其他文件中定义的变量,以便在当前文件中使用该变量。例如:

```c++

//file1.cpp

C++中extern关键字的用法及注意事项.html

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

ifndef PRINT_H

define PRINT_H

void print(int num);

endif

//file1.cpp

include "print.h"

void test()

{

print(10);

}

//file2.cpp

include "print.h"

void test()

{

print(20);

}

```

在上述代码中,我们将print函数的声明放在了print.h头文件中,并在file1.cpp和file2.cpp中分别使用了该函数。需要注意的是,在头文件中使用extern关键字声明函数时,不需要使用extern关键字。

2. 在多个文件中使用同一变量

在C++中,有时需要在多个文件中使用同一变量,可以使用extern关键字来实现。例如:

```c++

//count.h

ifndef COUNT_H

define COUNT_H

extern int count;

endif

//file1.cpp

include "count.h"

void test()

{

count++;

}

//file2.cpp

include "count.h"

void test()

{

count--;

}

```

在上述代码中,我们将count变量的声明放在了count.h头文件中,并在file1.cpp和file2.cpp中分别使用了该变量。需要注意的是,在使用同一变量时,需要保证变量的类型和名称一致。

3. 在C++中使用C语言库函数

在C++中,可以使用C语言库函数,但需要使用extern "C"关键字来告诉编译器该函数是C语言函数。例如:

```c++

//file1.cpp

extern "C" {

include

}

void test()

{

printf("Hello, world!");

}

```

在上述代码中,我们使用了C语言库函数printf,并使用extern "C"关键字告诉编译器该函数是C语言函数。需要注意的是,在使用C语言库函数时,需要使用extern "C"关键字。

四、总结

本文介绍了C++中extern关键字的基本用法及注意事项,包括变量和函数的声明、不要初始化变量、保证函数参数类型一致等。此外,本文还介绍了extern关键字的高级用法,包括在头文件中使用extern关键字、在多个文件中使用同一变量、在C++中使用C语言库函数等。需要注意的是,在使用extern关键字时,需要保证变量和函数的类型、名称、参数类型和返回类型一致。

本文转载自互联网,如有侵权,联系删除

相关推荐