有人可以告诉我对各种编译器的#pragma once
指令支持的解决方法吗?
我想在我的标题中使用:
#if _MSC_VER > ... || __GNUC__ > ... || ...
#pragma once
#endif
也许它已存在于提升源或代码中?
答案 0 :(得分:15)
#ifndef MY_HEADER_H
#define MY_HEADER_H
// ...
#endif // MY_HEADER_H
有时您会看到这些与#pragma once
的使用相结合:
#pragma once
#ifndef MY_HEADER_H
#define MY_HEADER_H
// ...
#endif // MY_HEADER_H
#pragma once
非常widely supported。
答案 1 :(得分:6)
#pragma once
是包含警卫的非标准替代方案:
#ifndef HEADER_H
#define HEADER_H
//contents of header
#endif
两者都确保标题内容不会在同一个翻译单元中粘贴多次。