【问题标题】:Is `*` (the asterisk) a keyword in C11?`*`(星号)是 C11 中的关键字吗?
【发布时间】:2014-05-23 13:45:23
【问题描述】:

在 C11 标准的第 6.4.1 节中,一个星号出现在关键字列表中:

keyword: one of
  auto      ∗ if        unsigned
  break       inline    void
  ...

这是否表明* 是关键字?

如果不是,这里说明它有什么用?

【问题讨论】:

  • 不是关键字,而是重载的运算符。
  • @leeduhem 问题指的是 C 11 规范,而不是 C++ 11 规范。
  • @JefferyThomas 在 C 中,* 也有几个函数,换句话说,它是一个内置的重载运算符。
  • @leeduhem:不过,在词汇上,它是一个标点符号 (6.4.6)
  • @rici 是的,没错。

标签: c standards language-lawyer c11


【解决方案1】:

这是一个差异标记。

N1570的摘要(p.1)中:

与先前草案 (N1539) 相比的更改由右侧的“差异标记”表示 边距:删除的文本标有“*”,新的或更改的文本标有“'”。

N1539 草稿中,alignof 是一个关键字,出现在该表的第一行:

N1750 删除了 alignof 并将其替换为 _Alignof

“*”的位置确实有点奇怪,但它绝对不是指* 运算符。

【讨论】:

  • 为什么会出现在if旁边?
  • @KeithThompson 感谢您的改进。
猜你喜欢
  • 1970-01-01
  • 2017-01-22
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2023-02-10
  • 2017-07-10
  • 2014-09-16
  • 2014-04-15
相关资源
最近更新 更多