#pragma once position:#include&之前或之后

时间:2017-04-19 10:03:03

标签: c++

在现有代码中,我看到#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曾经不是标准的一部分并且包括警卫,但这不是我的问题。

1 个答案:

答案 0 :(得分:13)

在包含任何标头之前,应放置

#pragma onceArgument 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