我在哪里可以找到涵盖K&R1/2,C89-C1X及其来源的C(和/或C++)关键字列表?

Where can I find a list of C (and/or C++) keywords covering K&R1/2, C89-C1X and their origins?

本文关键字:列表 关键字 C++ C89-C1X 在哪里 R1      更新时间:2023-10-16

我接触过大量的编码指南,每一个都给出了命名"事物"的指南。一个特定的C89命名规则引发了这个问题:明确禁止对变量使用'new'这个名字,因为在c++中这是一个关键字。

这让我开始思考下一个标准,C99有很好的文档,但C11相对较新(2014年)。而且标准委员会还有几个扩展正在进行中。

因此,我想知道是否有人可以提供一个关键字及其来源的列表,以便制定一套命名规则,包括避免使用几个名称的原因。

虽然严格来说complex不是关键字,但最好包含类似的定义。还有c++方面的知识。

From n3242(即c++ 11)

2.12关键词
表4 -关键词

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

表5 -备选表示法

and      and_eq           bitand        bitor       compl
not      not_eq           or            or_eq       xor
xor_eq

From n1256 (C99)

A.1.2关键词
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
  • and_eq
  • alignas
  • alignof
  • asm
  • 汽车>
  • bitand
  • bitor
  • bool
  • 休息
  • <
  • 案例/gh>
  • 抓住
  • 字符
  • char16_t
  • char32_t >类
  • const
  • constexpr
  • const_cast
  • decltype
  • 默认
  • 删除
  • dynamic_cast
  • 其他
  • enum >明确
  • extern
  • goto
  • 如果>内联>int
  • 可变
  • 名称空间
  • 新>
  • noexcept
  • not_eq
  • nullptr
  • 操作符
  • or_eq
  • 私人>
  • 公共>
  • reinterpret_cast
  • 签署的
  • 运算符
  • 静态>
  • static_assert
  • static_cast
  • struct
  • 模板
  • thread_local
  • 真正
  • typedef
  • 类型id
  • typename
  • 工会
  • 无符号>使用>虚拟>
  • 空白
  • 波动
  • wchar_t
  • ,
  • xor
  • xor_eq
从cppreference.com

    汽车>
  • _Bool
  • 休息
  • <
  • 案例/gh>
  • 字符
  • _Complex
  • const
  • 默认
  • 其他
  • enum >extern
  • goto
  • 如果>
  • _Imaginary
  • 内联>int
  • 签署的
  • 运算符
  • 静态>
  • struct
  • typedef
  • 工会
  • 无符号>
  • 空白
  • 波动
  • ,
从维基百科

格式化这个很有趣

感谢所有的回答和评论,但是仅仅有一个关键字列表并不是我提问的目的。特别是,

…以及它们的起源……

显然被忽略了。但是在起草编码指南时,您总是需要给出每个限制的基本原理。

这就是为什么我开始收集我自己的数据,并把它放在一个文件。我还在努力,特别是1995年对C90标准的AM1修正案没有完全包括在内,对于c++来说,只使用了最新的c++ 11标准(部分),几个技术报告仍然需要包括在内,等等。但由于工作繁忙,我目前没有进行太多更新,所以我在我的网站上放了一个草案版本供下载。

如果你感兴趣,请看这里:C中的保留词(pdf)。随时欢迎补充和更正,联系方式在我的网站。

就其价值而言。

C11有新的关键词。其中一些是_Alignas, _Alignof。您可以在http://www.sdlczone.com/complete-list-of-c-keywords/

找到完整的列表。