__pragma是什么,__pragma和#pragma有什么区别?

6
以下宏让我感到困惑。我想知道__pragma是什么,以及__pragma和#pragma之间的区别是什么。
#define OPENVDB_START_THREADSAFE_STATIC_WRITE       __pragma(warning(disable:1711))
#define OPENVDB_FINISH_THREADSAFE_STATIC_WRITE      __pragma(warning(default:1711))

2
__pragma 关键字是专门针对微软编译器的,它使您能够在宏定义中编写 pragma 指令。 - Anirudh Ramanathan
1个回答

15
#pragma是一个预处理指令,无法在#define指令中使用。因此,__pragma的存在就提供了一种从宏被扩展的任何位置发出编译指示的方法。这是非标准编译器扩展(MSVC、Intel和一些C编译器支持不同程度的扩展)。另请参见新版本C/C++标准中定义的_Pragma运算符(具有稍微不同的语法,但具有相同的目的)。

1
标准C语言在1999年的标准中(微软不支持)引入了_Pragma运算符,这个运算符可能类似于微软的__pragma - Keith Thompson

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接