【问题标题】:What is __pragma and what are the differences between __pragma and #pragma什么是 __pragma 以及 __pragma 和 #pragma 之间有什么区别
【发布时间】:2014-07-10 12:06:19
【问题描述】:

以下宏让我感到困惑。我想知道__pragma是什么,__pragma和#pragma有什么区别。

#define OPENVDB_START_THREADSAFE_STATIC_WRITE       __pragma(warning(disable:1711))
#define OPENVDB_FINISH_THREADSAFE_STATIC_WRITE      __pragma(warning(default:1711))

【问题讨论】:

标签: c++ macros


【解决方案1】:

#pragma 本身就是一个预处理器指令;它不能在#define 指令中使用。

所以,这就是__pragma 存在的原因:它提供了一种从使用它的宏展开的任何地方发出编译指示的方法。

这是一个非标准的编译器扩展(MSVC、Intel 和一些 C 编译器在不同程度上支持它)。另请参阅在较新版本的 C/C++ 标准中定义的 _Pragma operator(其用途相同,但语法略有不同)。

【讨论】:

  • 标准 C,截至 1999 年标准(微软不支持)有一个 _Pragma 运算符,可能类似于 Microsoft 的 __pragma
猜你喜欢
  • 1970-01-01
  • 2010-12-19
  • 2011-04-16
  • 1970-01-01
  • 2014-06-04
  • 1970-01-01
  • 2014-03-20
  • 2012-03-20
  • 2015-11-19
相关资源
最近更新 更多