在现有代码中,我看到#pragma曾经在标题#include' s
之后使用//Some_Header.h
#include "header1.h"
#include "header2.h"
#pragma once
//implementations
而不是
//Some_Header.h
#pragma once
#include "header1.h"
#include "header2.h"
//implementations
我认为它总是需要像第二个例子一样,你的#pragma曾经被定义的位置或者预处理器在文件中的任何地方选择它是否重要?
修改
我知道#pragma曾经不是标准的一部分并且包括警卫,但这不是我的问题。
答案 0 :(得分:13)
#pragma once
。 Argument of #pragma directive is a subject to macro expansion.因此,包含标头的内容可以改变编译指示行为:
// whatever.hpp
...
#define once lol_no
// your_header.hpp
#include "whatever.hpp"
#pragma once // warning C4068: unknown pragma