C++ 在哪里可以找到涵盖K&;的C(和/或C+;+;)关键字列表;R1/2、C89-C1X及其起源?
我接触过许多编码准则,其中每一条都给出了命名“事物”的准则。一个特定的C89命名规则触发了这个问题:它明确禁止使用变量“New”,因为在C++中,这是一个关键字。 这让我开始思考下一个标准,C99有很好的文档记录,但C11相对较新(2014年)。标准委员会还有几项扩展工作正在进行中 因此,我想知道是否有人可以提供一个包含关键字及其来源的列表,以便制定一套命名规则,包括避免使用几个名称的原因 尽管严格意义上的C++ 在哪里可以找到涵盖K&;的C(和/或C+;+;)关键字列表;R1/2、C89-C1X及其起源?,c++,c,language-lawyer,C++,C,Language Lawyer,我接触过许多编码准则,其中每一条都给出了命名“事物”的准则。一个特定的C89命名规则触发了这个问题:它明确禁止使用变量“New”,因为在C++中,这是一个关键字。 这让我开始思考下一个标准,C99有很好的文档记录,但C11相对较新(2014年)。标准委员会还有几项扩展工作正在进行中 因此,我想知道是否有人可以提供一个包含关键字及其来源的列表,以便制定一套命名规则,包括避免使用几个名称的原因 尽管严格意义上的complex不是一个关键词,但最好包含类似的定义。而且C++信息也很受欢迎。UL> 及
complex
不是一个关键词,但最好包含类似的定义。而且C++信息也很受欢迎。UL>
- 自动的
- _布尔
- 中断
- 案例
- 煤焦
- _复杂的
- 常数
- 继续
- 违约
- 做
- 双重的
- 否则
- 枚举
- 外行
- 浮动
- 为了
- 后藤
- 如果
- _想象的
- 内联
- int
- 长的
- 登记册
- 限制
- 返回
- 短
- 签名
- sizeof
- 静止的
- 结构
- 开关
- 类型定义
- 联合
- 未签名
- 空虚
- 易变的
- 当
谢谢你的回答和评论,但我的问题并不是简单地列出一系列关键词。特别是 。。。他们的起源 显然被忽视了。但在起草编码指南时,您总是需要给出每个限制的基本原理 这就是为什么我开始收集自己的数据,并将其放入文档中。我还在努力,特别是1995版的C90标准的AM1修正案并没有完全包含在内,对于C++,只有最新的C++ 11标准已经被使用(部分),一些技术报告仍然需要包含在内。但是由于我目前没有因为工作量而进行许多更新,所以我在我的网站上发布了一个草稿版本。 如果你感兴趣,请看这里:。 欢迎添加和更正,联系方式请访问我的网站
FWIW.C11有了新的关键词。其中一些是_Alignas,_Alignof。
您可以在中找到完整的列表。您应该对编码标准稍加重视。他们太多了,如果你跟随其中的一半,你永远无法完成一个项目。可能是真的,但作为一名顾问,我有时会被问到(大多数时候我也不得不跟随一个)。我宁愿给出有根据的建议,也不愿给他们一套没有理由的规则。我已经看过软件使用<代码>新< /COD>,<代码>复数< /COD>,<代码>十进制< /代码>,并根据下一组标准,或移植到C++,我希望有这样的列表。你想知道什么?在C++中,所有的类型/对象都在命名空间STD::这样就不会与你的类型名称(如复杂)冲突。所以你需要担心的就是关键词。标准K&R1中定义了一个关键字
条目
,TR19769定义了新的字符数据类型,volatile
在C94中引入(IIRC),C1X添加了大量内容。也许它不存在,但我有兴趣把所有这些都放在一个地方。或者您是否知道避免使用变量名小数128
?这是完整的列表吗?如果我没记错的话,我没有看到任何地方提到过long
,这也是标准的。@Als“long-long”是两个词。实际上,有两个关键词。格式化很有趣-滚动浏览它不是:)@Als我发现它令人奇怪地满意,尽管可能是因为错误的原因D“格式化这很有趣”->你应该试试Vim@ereOn Vim绝对很有趣。gg shift+v G>gg ctrl+v G c space-space esc由于一年多以来没有添加任何内容,而且我的文档也没有任何评论,因此我给自己打了一个最佳答案的分数。如果这不合适,请告诉我。
alignas alignof asm auto bool
break case catch char char16_t
char32_t class const constexpr const_cast
continue decltype default delete double
do dynamic_cast else enum explicit
export extern false float for
friend goto if inline int
long mutable namespace new noexcept
nullptr operator private protected public
register reinterpret_cast return short signed
sizeof static static_assert static_cast struct
switch template this thread_local throw
true try typedef typeid typename
union unsigned using virtual void
volatile wchar_t while
and and_eq bitand bitor compl
not not_eq or or_eq xor
xor_eq
auto enum break extern case
float char for const goto
continue if default inline do
int double long else register
restrict return short signed sizeof
static struct switch typedef union
unsigned void volatile while _Bool
_Complex _Imaginary