c++关于头文件中的防卫式声明
防止由于同一个头文件被包含多次,从而导致重复定义
在写头文件时,有两种方法用来进行防卫式声明:
1.宏定义方法:
#ifndef FILENAME
#define FILENAME
//…
#endif
当宏已经定义时,#endif之前的代码就会被忽略,但是这里需要注意宏命名重名的问题。
2.编译器指令
#pragma once
该方法一般情况下也可以,但是只能保证同一个文件不会被编译多次,但是当两个不同的文件内容相同时,仍然会出错
代码:
main.cpp
#include<iostream>
#include"car.h"
#include"person.h"
using namespace std;
int main() {
cout<<123;
}
头文件
person.h
#ifndef _FILENAME_
#define _FILENAME_
class Car {
};
#endif
car.h
#ifndef _FILENAME_
#define _FILENAME_
class Car {
};
#endif