c++ 多个头文件与源文件 重复定义的例子
时间: 2023-07-15 12:14:30 浏览: 88
C++中的头文件和源文件[参考].pdf
假设有两个头文件`a.h`和`b.h`,以及两个源文件`main.cpp`和`func.cpp`。其中,`a.h`和`b.h`都包含了同一个变量的声明,如下所示:
a.h
```cpp
#ifndef A_H
#define A_H
int x;
#endif // A_H
```
b.h
```cpp
#ifndef B_H
#define B_H
int x;
#endif // B_H
```
main.cpp
```cpp
#include "a.h"
#include "b.h"
int main() {
return 0;
}
```
func.cpp
```cpp
#include "a.h"
void func() {
x = 0;
}
```
在这种情况下,当我们编译`main.cpp`时,会发生重复定义错误,因为`a.h`和`b.h`都包含了同一个变量的声明。然而,由于`func.cpp`只包含了`a.h`头文件,因此编译`func.cpp`不会出错。
为了解决这个问题,我们可以使用头文件保护(`#ifndef`、`#define`、`#endif`)来避免重复定义。具体来说,在`a.h`和`b.h`中,我们可以使用以下方式来声明变量:
```cpp
#ifndef X_DEFINED
#define X_DEFINED
int x;
#endif // X_DEFINED
```
这样,在编译时,`X_DEFINED`只会被定义一次,避免了重复定义的问题。
阅读全文