下面的宏让我很困惑。我想知道什么是 __pragma 以及 __pragma 和 #pragma 之间的区别。
#define OPENVDB_START_THREADSAFE_STATIC_WRITE __pragma(warning(disable:1711))
#define OPENVDB_FINISH_THREADSAFE_STATIC_WRITE __pragma(warning(default:1711))
最佳答案
#pragma
本身就是一个预处理器指令;它不能在 #define
指令中使用。
因此,这就是 __pragma
存在的原因:它提供了一种从使用它的宏展开的任何地方发出 pragma 的方法。
这是一个非标准的编译器扩展(MSVC、Intel 和一些 C 编译器都不同程度地支持它)。另见 _Pragma
operator这是在较新版本的 C/C++ 标准中定义的(目的相同,但语法略有不同)。
关于c++ - 什么是 __pragma 以及 __pragma 和 #pragma 之间的区别是什么,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/23790112/