参考:
#pragma once
wiki:include guard
头文件保护符
在C++中我们写头文件时经常需要#include来包含其他头文件。头文件定义的实体经常使用其他头文件的内容,有时候会出现一个头文件被多次包含进同一源文件。
例如 1.有一个头文件log.h(其中定义了一个struct),如果在一个cpp文件中多次包含此头文件,会出现重复定义的情况。 2.有一个头文件log.h(其中定义了一个struct),另一个头文件test.h((其中定义了一个struct))包含了log.h,如果在一个cpp文件中包含这两个头文件,则会出现重复定义的情况。
#pragma once
这种方式是C++ 11新标准中的一部分 基本上为所有编译器支持,而且比下面这种方式更加高效。
#ifndef XXX
#define XXX
#endif
测试代码: log.h
struct Haha{
};
test.cpp
#include "log.h"
#include "log.h"
using namespace std;
int main()
{
return 0;
}
error redefinition of 'struct Haha’
常规方法(#ifndef…)
测试代码: log.h
#ifndef _LOG_
#define _LOG_
struct Haha{
};
#endif
test.cpp
#include "log.h"
#include "log.h"
using namespace std;
int main()
{
return 0;
}
error redefinition of 'struct Haha’
头文件包含(待续)~~
头文件包含一般有两种方式,“ ”和< >
|