1

1.我看到很多地方,Header guards和pragma once也以特定的顺序一起使用(顺序真的重要吗?)

2.另外一个疑问是默认情况下,每当VS IDE生成一个新的类文件时,它都会将#pragma一次放入实现文件(.cpp)。这真的需要吗?

#ifndef MYHEADER_H
#define MYHEADER_H

#pragma once

//my set of includes

哪种是标头保护的正确方法,或者更确切地说是阻止多个包含?

4

2 回答 2

3
#pragma once  

是非标准的,尽管许多流行的编译器/预处理器都支持。请参阅#pragma once 是安全包含守卫吗?

#ifndef MYHEADER_H
#define MYHEADER_H
#endif // ndef MYHEADER_H

保证适用于所有 C++ 编译器/预处理器。

同时使用两者是没有意义的。

于 2013-02-15T21:31:57.613 回答
0

“#pragma once”是特定于编译器的,可能不可移植。“#ifndef/#define/#endif”更便携,适用于所有预处理器。

于 2013-02-15T21:31:42.557 回答