看到未知属性时需要做什么?

问题描述 投票:0回答:1

C2X引入了“属性说明符序列”,可以有以下形式:

1) standard attribute, such as [[fallthrough]]
2) attribute with a namespace, such as [[gnu::unused]]
3) standard attribute with arguments, such as [[deprecated("reason")]]
4) attribute with both a namespace and an argument list, such as [[gnu::nonnull(1)]]

当实现看到它无法识别的属性时会发生什么?是否需要打印错误,或者忽略它,或者打印一些诊断信息?

c c23 function-attributes
1个回答
0
投票

ISO C 标准明确指出,实现不支持的任何属性标记都将被忽略。

来自最新草案,6.7.13 属性:

6.7.13.1 简介

1 属性指定各种源构造的附加信息,例如类型、对象、标识符或 块。它们由属性标记来标识,该属性标记可以是 属性前缀标记(用于特定于实现的属性)或 由标识符指定的标准属性(对于属性 本文件中指定)。 2 支持任何标准 本文档中指定的属性是实现定义的并且 选修的。对于属性标记(包括前缀为 令牌)未在本文档中指定,行为是 实现定义的。 任何不支持的属性标记 实施被忽略。

© www.soinside.com 2019 - 2024. All rights reserved.