【发布时间】:2017-09-15 11:48:01
【问题描述】:
在现有代码中,我看到 #pragma once 在标头 #includes 之后使用
//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 once 是在哪里定义的,还是预处理器在文件中的任何位置提取它是否重要?
编辑
我知道#pragma once 不是标准的一部分,包括警卫,但这不是我的问题。
【问题讨论】:
-
请记住,尽管各种编译器广泛支持此功能,但它并不是标准 C++ 的一部分。
-
我知道无数关于这个问题的文章在各地都没有得到支持,我真的找不到我想要的解释。
-
我从不使用它,所以我不确定——但我会尽可能地把它贴在文件的开头。它只是更有意义。
-
我也一直这样认为,它是一种包含保护的翻译,但看到这一点我想确定一下。
-
解决重复标记:另一个问题是关于 pragma once 位置与包括警卫。这个问题讨论了一次编译指示与标题包含。所以我认为它被错误地标记了。