1.我看到很多地方,Header guards和pragma once也以特定的顺序一起使用(顺序真的重要吗?)
2.另外一个疑问是默认情况下,每当VS IDE生成一个新的类文件时,它都会将#pragma一次放入实现文件(.cpp)。这真的需要吗?
#ifndef MYHEADER_H
#define MYHEADER_H
#pragma once
//my set of includes
哪种是标头保护的正确方法,或者更确切地说是阻止多个包含?
1.我看到很多地方,Header guards和pragma once也以特定的顺序一起使用(顺序真的重要吗?)
2.另外一个疑问是默认情况下,每当VS IDE生成一个新的类文件时,它都会将#pragma一次放入实现文件(.cpp)。这真的需要吗?
#ifndef MYHEADER_H
#define MYHEADER_H
#pragma once
//my set of includes
哪种是标头保护的正确方法,或者更确切地说是阻止多个包含?
#pragma once
是非标准的,尽管许多流行的编译器/预处理器都支持。请参阅#pragma once 是安全包含守卫吗?
#ifndef MYHEADER_H
#define MYHEADER_H
#endif // ndef MYHEADER_H
保证适用于所有 C++ 编译器/预处理器。
同时使用两者是没有意义的。
“#pragma once”是特定于编译器的,可能不可移植。“#ifndef/#define/#endif”更便携,适用于所有预处理器。