C++ 关键词

来自cppreference.com
< cpp
 
 
C++ 语言
 
 

这是 C++ 中的保留词列表。因为它们用于语言本身,所以这些关键词不能用于重定义或重载。有一点例外是,它们在属性中(的属性实参列表外)不是保留词。 (C++11 起)

A – C D – P R – Z

alignas (C++11)
alignof (C++11)
and
and_eq
asm
atomic_cancel (TM TS)
atomic_commit (TM TS)
atomic_noexcept (TM TS)
auto (1) (2) (3) (4)
bitand
bitor
bool
break
case
catch
char
char8_t (C++20)
char16_t (C++11)
char32_t (C++11)
class (1)
compl
concept (C++20)
const
consteval (C++20)
constexpr (C++11)
constinit (C++20)
const_cast
continue
co_await (C++20)
co_return (C++20)
co_yield (C++20)

decltype (C++11)
default (1)
delete (1)
do
double
dynamic_cast
else
enum (1)
explicit
export (1) (3)
extern (1)
false
float
for (1)
friend
goto
if (2) (4)
inline (1)
int
long
mutable (1)
namespace
new
noexcept (C++11)
not
not_eq
nullptr (C++11)
operator (4)
or
or_eq
private (3)
protected
public

reflexpr (反射 TS)
register (2)
reinterpret_cast
requires (C++20)
return
short
signed
sizeof (1)
static
static_assert (C++11)
static_cast
struct (1)
switch
synchronized (TM TS)
template
this (4)
thread_local (C++11)
throw
true
try
typedef
typeid
typename
union
unsigned
using (1)
virtual
void
volatile
wchar_t
while
xor
xor_eq

  • (1) — C++11 中含义改变或添加新含义。
  • (2) — C++17 中含义改变。
  • (3) — C++20 中含义改变。
  • (4) — C++23 中添加新含义。

注意 andbitororxorcomplbitandand_eqor_eqxor_eqnotnot_eq(还有双标符 <%%><::>%:%:%:)提供了标准记号的代用表示方法这些关键词在属性中(的属性实参列表外)也是保留词,但部分实现不会将它们在此视为保留词。 (C++11 起)

除了关键词外,还有拥有特殊含义的标识符,它们可以用作对象或函数的名字,但在特定语境拥有特殊含义。

override (C++11)
final (C++11)
import (C++20)
module (C++20)
transaction_safe (TM TS)
transaction_safe_dynamic (TM TS)

还有,在任何位置含双下划线 __ 的所有标识符,和以一个下划线后随一个大写字母开始的所有标识符,都始终受保留,而所有以单下划线开始的标识符,保留用作全局命名空间中的名称。更多细节见标识符

命名空间 std 用于放置标准 C++ 库中的名称。关于向它添加名称的规则,见扩充命名空间 std

名称 posix 保留作为未来的顶级命名空间。如果程序在该命名空间声明或定义任何内容,那么行为未定义。

(C++11 起)

预处理器在预处理指令的语境中识别下列记号:

if
elif
else
endif

ifdef
ifndef
define
undef

include
line
error
pragma

defined
__has_include (C++17 起)
__has_cpp_attribute (C++20 起)

export (C++20)
import (C++20)
module (C++20)

预处理器在预处理指令的语境之外 识别下列记号:

_Pragma (C++11 起)

参阅