__has_cpp_attribute 不是“类似函数”的宏?

2023-12-06

我正在尝试介绍[[deprecated]]属性到我的代码库中。然而,并不是所有我需要支持的编译器都支持这种语法(标准化之前不同编译器使用的各种方法在属性标准化提案 N2761)。因此,我尝试使用此属性有条件地编译__has_cpp_attribute首先是类似宏的函数(如果可用),如下所示:

#if defined(__has_cpp_attribute) && __has_cpp_attribute(deprecated)
    #define DEPRECATED(msg) [[deprecated(msg)]]
#elif OTHER_COMPILER
    // ...
#endif

但是,我在编译时遇到错误gcc version 4.9.2 (GCC), 命令行gcc -std=c++14 cpp.cpp:

cpp.cpp:1:56: error: missing binary operator before token "("
#if defined(__has_cpp_attribute) && __has_cpp_attribute(deprecated)

这个错误似乎表明__has_cpp_attribute已定义,但它不是宏函数。有条件编译的正确方法是什么[[deprecated]]gcc 中的属性?


GCC 4.9 没有__has_cpp_attribute,以及短路行为&&不扩展到允许无效的结构跟随它。

也就是说,如果foo没有定义,

#if defined(foo) && foo(bar)

无效。

你想要的是

#if defined(__has_cpp_attribute) 
    #if __has_cpp_attribute(deprecated)
        #define DEPRECATED(msg) [[deprecated(msg)]]
    #endif
#elif OTHER_COMPILER
    // ...
#endif

使得条件使用__has_cpp_attribute位于被跳过的组中,如果__has_cpp_attribute没有定义。 (当处于被跳过的组中时,预处理指令仅通过指令名称进行处理;其余标记将被忽略。)

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

__has_cpp_attribute 不是“类似函数”的宏? 的相关文章

  • 在C语言中使用“void”

    我很困惑为什么我们需要通过void转换为 C 函数 int f void return 0 versus int f return 0 什么是正确的做法以及为什么 In C int f 是一种老式的声明 它说f需要固定但未指定数量和类型的参
  • 具有子列表属性映射问题的自动映射器

    我有以下型号 Models public class Dish Required public Int64 ID get set Required public string Name get set Required public str
  • OpenCv读/写视频色差

    我试图简单地使用 openCV 打开视频 处理帧并将处理后的帧写入新的视频文件 我的问题是 即使我根本不处理帧 只是打开视频 使用 VideoCapture 读取帧并使用 VideoWriter 将它们写入新文件 输出文件看起来比输入更 绿
  • 使用具有现有访问令牌的 Google API .NET 客户端

    用例如下 移动应用程序正在通过 Google 对用户进行身份验证 并且在某些时候 我们需要将用户的视频发布到他的 YouTube 帐户 出于实际原因 实际发布应该由后端完成 已经存储在那里的大文件 由于用户已经通过应用程序的身份验证 因此应
  • 以编程方式检查页面是否需要基于 web.config 设置进行身份验证

    我想知道是否有一种方法可以检查页面是否需要基于 web config 设置进行身份验证 基本上如果有这样的节点
  • 向 ExpandoObject 添加方法时,“关键字 'this' 在静态属性、静态方法或静态字段初始值设定项中无效”

    我尝试向 ExpandoObject 添加一个动态方法 该方法将返回属性 动态添加 给它 但它总是给我错误 我在这里做错了什么吗 using System using System Collections Generic using Sys
  • 使用post方法将多个参数发送到asp.net core 3 mvc操作

    使用 http post 方法向 asp net mvc core 3 操作发送具有多个参数的 ajax 请求时存在问题 参数不绑定 在 dot net 框架 asp net web api 中存在类似的限制 但在 asp net mvc
  • 如何使用recv()检测客户端是否仍然连接(并且没有挂起)?

    我写了一个多客户端服务器程序C on SuSE Linux 企业服务器 12 3 x86 64 我为每个客户端使用一个线程来接收数据 我的问题是 我使用一个终端来运行服务器 并使用其他几个终端来运行服务器telnet到我的服务器 作为客户端
  • 从多个类访问串行端口

    我正在尝试使用串行端口在 arduino 和 C 程序之间进行通信 我对 C 编程有点陌生 该程序有多种用户控制形式 每一个都需要访问串口来发送数据 我需要做的就是从每个类的主窗体中写入串行端口 我了解如何设置和写入串行端口 这是我的 Fo
  • ASP MVC:服务应该返回 IQueryable 的吗?

    你怎么认为 你的 DAO 应该返回一个 IQueryable 以便在你的控制器中使用它吗 不 您的控制器根本不应该处理任何复杂的逻辑 保持苗条身材 模型 而不是 DAO 应该将控制器返回给视图所需的所有内容 我认为在控制器类中看到查询 甚至
  • 在 2D 中将一个点旋转另一个点

    我想知道当一个点相对于另一个点旋转一定角度时如何计算出新的坐标 我有一个块箭头 想要将其相对于箭头底部中间的点旋转角度 theta 这是允许我在两个屏幕控件之间绘制多边形所必需的 我无法使用和旋转图像 从我到目前为止所考虑的情况来看 使问题
  • Qt 创建布局并动态添加小部件到布局

    我正在尝试在 MainWindow 类中动态创建布局 我有四个框架 它们是用网格布局对象放置的 每个框架都包含一个自定义的 ClockWidget 我希望 ClockWidget 对象在调整主窗口大小时相应地调整大小 因此我需要将它们添加到
  • 将数据打印到文件

    我已经超载了 lt lt 运算符 使其写入文件并写入控制台 我已经为同一个函数创建了 8 个线程 并且我想输出 hello hi 如果我在无限循环中运行这个线程例程 文件中的o p是 hello hi hello hi hello hi e
  • Azure 事件中心 - 按顺序接收事件

    我使用下面的代码从 Azure Event Hub 接收事件 https learn microsoft com en us azure event hubs event hubs dotnet framework getstarted s
  • 如何在c#中的内部类中访问外部类的变量[重复]

    这个问题在这里已经有答案了 我有两个类 我需要声明两个类共有的变量 如果是嵌套类 我需要访问内部类中的外部类变量 请给我一个更好的方法来在 C 中做到这一点 示例代码 Class A int a Class B Need to access
  • 将构建日期放入“关于”框中

    我有一个带有 关于 框的 C WinForms 应用程序 我使用以下方法将版本号放入 关于 框中 FileVersionInfo GetVersionInfo Assembly GetExecutingAssembly Location F
  • System.Runtime.InteropServices.COMException(0x80040154):[关闭]

    Closed 这个问题不符合堆栈溢出指南 help closed questions 目前不接受答案 我在 C 项目中遇到异常 System Runtime InteropServices COMException 0x80040154 检
  • 使用 C# 从 DateTime 获取日期

    愚蠢的问题 给定日期时间中的日期 我知道它是星期二 例如我如何知道它的 tue 2 和 mon 1 等 Thanks 您正在寻找星期几 http msdn microsoft com en us library system datetim
  • 使用 CSharpCodeProvider 类编译 C# 7.3 的 C# 编译器版本是什么?

    我想使用 Microsoft CSharp CSharpCodeProvider 类来编译 C 7 3 代码 编译器版本在 IDictionary 中指定 在创建新的 CSharpCodeProvider 时将其作为输入 例如 Compil
  • 匿名结构体作为返回类型

    下面的代码编译得很好VC 19 00 23506 http rextester com GMUP11493 标志 Wall WX Za 与VC 19 10 25109 0 标志 Wall WX Za permissive 这可以在以下位置检

随机推荐

  • 在 WebGL for 循环中使用制服(或类似的)的解决方法?

    我正在致力于在 WebGL 中实现片段着色器 并遇到了只能在 for 循环中使用常量表达式的限制 有人对此有任何合适的解决方法吗 在我的具体情况下 我正在实现双边过滤器 并且当前在我的片段着色器中将窗口大小指定为常量 但希望能够从 Java
  • 实体框架 - “无法创建‘闭包类型’类型的常量值...”错误

    为什么我会收到错误 无法创建 闭包类型 类型的常量值 仅有的 支持基本类型 例如 Int32 String 和 Guid 这个背景 当我尝试枚举以下 Linq 查询时 IEnumerable
  • 除了使用时间来生成随机数之外,还有其他选择吗?

    我试图在计算集群中同时运行一段代码的多个实例 2000 个实例左右 它的工作方式是 我提交作业 集群将在节点经常打开时运行它们 每个节点有多个作业 这似乎在使用时间种子的随机数生成中为大量实例生成相同的值 我可以使用一个简单的替代方案吗 可
  • 使用 python 列表理解的毕达哥拉斯三元组

    我可以使用 for 循环找出毕达哥拉斯三元组 如下所示 def triplet n Find all the Pythagorean triplets between 1 and n inclusive for a in range n 1
  • 无法将类型“double”隐式转换为“string”

    我正在编写一个程序来获取圆的半径并输出直径 面积和周长 我尝试从直径开始 但不断收到错误 无法将类型 double 隐式转换为 string 我已经使用整数完成了类似的程序 但我一生都无法弄清楚如何在文本框中接收浮点数并计算它们以便我可以输
  • 缩进#define

    我知道 defines 等通常不会缩进 为什么 我目前正在编写一些代码 其中混合了可怕的内容 defines ifdefs elses endif等等 所有这些经常与普通的 C 代码混合在一起 的非缩进 defines 使它们难以阅读 以及
  • 日期查找表 (1990/01/01:2041/12/31)

    我使用 DATE 的主表来查找日期和其他值 以便控制我的应用程序中的多个事件 间隔和计算 它包含从 01 01 1990 到 12 31 2041 之间每一天的行 我如何使用此查找表的一个示例是 一位顾客典当了一件物品 JAN 31 201
  • 如何在 Django 模型中存储元组列表?

    是否可以存储元组的字段Model在姜戈 就我而言 我有一个模型翻译器 翻译者应该存储有关他可以翻译哪些语言的信息 但可能存在翻译人员无法将英语翻译成德语的情况 但他 她可以反方向进行翻译 所以一个对象翻译器可以存储这个 从德语到英语 从 荷
  • 如何检测用户在 Angular2 中导航回来?

    我有一个组件 我需要检测用户是否在浏览器中按下后退按钮来导航回来 目前我正在订阅路由器事件 constructor private router Router private activatedRoute ActivatedRoute th
  • 如何使用python-docx替换Word文档中的文本并保存

    同一页面中提到的 oodocx 模块将用户引导至似乎不存在的 examples 文件夹 我已经阅读了 python docx 0 7 2 的文档 以及我在 Stackoverflow 中可以找到的有关该主题的所有内容 所以请相信我已经完成了
  • HttpConnection 无法在真实设备中工作 -Blackberry

    这是我的代码 public String Serverconnection String url String line if DeviceInfo isSimulator url url deviceSide true try HttpC
  • 通过 Net::HTTP 下载 zip 文件

    我正在尝试从下载最新的 zipWordPress org使用 Net HTTP 这是我到目前为止所得到的 Net HTTP start wordpress org http resp http get latest zip open a z
  • 登录-AzureRmAccount 和选择-AzureRmSubscription

    我已经在 Windows Server 2012 R2 上安装了 AzureRm 和 Azure 模块 我可以从此模块运行其他 cmdlet 例如 AddAzureRmAccount Get AzureRmSubscription 但 Lo
  • Android,沿路径移动位图?

    我想知道是否可以从路径中选择坐标来随着时间的推移绘制位图 例如 我有一张太阳的图像 我想随着时间的推移沿着弧形路径移动它 有没有什么方法可以定义这样的路径 然后沿着它移动 这样我就不必进行数学计算 Thanks 是的 可以沿着路径移动图像
  • 如何在 MySQL 中设置日语模式排序规则

    我在整理方面遇到问题 我想设置排序规则以支持日语 例如 当 table firstname 包含 时 包含 的查询应返回该记录 提前致谢 这就像 大写 和 小写 对吗 mysql gt SELECT COLLATE utf8 general
  • TestNG DataProvider 从 testng.xml 配置文件读取测试数据?

    TestNG DataProvider 是否可以从 testng xml 配置文件中读取测试数据 或者由于某种原因这是不现实的 我希望能够在套件级别和类级别从该文件读取测试数据 那么 给定一个像这样的testing xml 文件 我不确定它
  • Xamarin.Forms:UWP 应用的本地化

    如果我在 UWP 设备上运行我的应用程序 我会在Output window MakePRI 警告 0xdef00522 找到语言 en de 的资源 但未找到默认语言的资源 de DE en US 更改默认语言或使用默认语言限定资源 htt
  • ng-grid 将多个项目插入单元格

    如何将多个值插入到 1 个单元格 例如将电子邮件 电话和地址插入到 1 个单元格 我需要在单元格中减少行数和更多信息 我尝试过这样的方式 angular forEach scope genData function row row getN
  • Axis2 Web 服务客户端生成 - 无需修改客户端的类型

    是否可以使用 Axis2 和 Eclipse 生成 Web 服务客户端并让它使用包中已有的 java 类型 而不是创建它自己的类型 当然 原因是如果我已经创建了类型 A 并且它创建了自己的类型 A 我不能只将类型 A 的变量分配给类型 B
  • __has_cpp_attribute 不是“类似函数”的宏?

    我正在尝试介绍 deprecated 属性到我的代码库中 然而 并不是所有我需要支持的编译器都支持这种语法 标准化之前不同编译器使用的各种方法在属性标准化提案 N2761 因此 我尝试使用此属性有条件地编译 has cpp attribut