#pragma一旦编译器支持

时间:2012-08-27 19:30:35

标签: c++ c pragma

有人可以告诉我对各种编译器的#pragma once指令支持的解决方法吗?

我想在我的标题中使用:

#if _MSC_VER > ... || __GNUC__ > ... || ...

#pragma once

#endif

也许它已存在于提升源或代码中?

2 个答案:

答案 0 :(得分:15)

使用include guards

#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

两者都确保标题内容不会在同一个翻译单元中粘贴多次。