-qkeyword
适用的调用
选项 | xlc (编译 C) | xlC (编译 C++) | xlclang(编译 C) | xlclang++(编译 C++) |
---|---|---|---|---|
-qkeyword | ✓ | ✓ |
注: 此表中仅列出典型调用。 对于所有基本调用及其等效特殊调用,您可以参阅 编译器调用的完整列表 。
类别
等效编译指示
无
用途
控制每当指定的名称出现在程序源代码中时是将它视为关键字还是标识。
语法
缺省值
缺省情况下, C 和 C++ 语言标准s 中定义的所有内置关键字都保留为关键字。
使用量
不能使用此选项将关键字添加至语言。 但是,您可以使用 -qnokeyword=keyword_name 来禁用内置关键字,并使用 -qkeyword=keyword_name 来恢复这些关键字。
此选项可用于所有C++内置关键字。

关键词 | 特性 | -qlanglvl 子选项 |
---|---|---|
constexpr |
广义常量表达式 (C++11) | -qlanglvl=[no]constexpr |
decltype |
decltype (expression) 类型说明符 (C++11) | -qlanglvl=[no]decltype |
nullptr |
nullptr (C++11) | -qlanglvl=[no]nullptr |
static_assert |
static_assert 声明 (C++11) | -qlanglvl=[no]static_assert |
缺省情况下,这些关键字保留在所有 C++ 语言级别。 每个功能部件的 -qlanglvl 子选项或 -qlanglvl=[no]extended0x 组选项只能启用或禁用该功能部件, 但不能启用或禁用关联的关键字。 如果指定 -qkeyword=keyword_name 选项,那么编译器会保留 keyword_name (constexpr
, decltype
, nullptr
或 static_assert
) 作为关键字,但不会自动启用关联的功能部件。
下表演示了在不同的选项设置生效时编译器的行为。

-qkeyword=keyword_name 已启用 | -qnokeyword=keyword_name 已启用 | |
---|---|---|
已启用 -qlanglvl 子选项或组选项 | 已启用该功能。 keyword_name 保留为关键字。 | 已启用该功能。 keyword_name 保留为关键字。 发出警告消息以指示忽略 -qnokeyword=keyword_name 选项。 |
未启用 -qlanglvl 子选项和组选项 | 该功能部件已禁用。 keyword_name 保留为关键字。 在保留关键字但禁用该功能的情况下,不应使用 keyword_name 的上下文中发出错误消息。 您可以使用 -qlanglvl 子选项或组选项来启用该功能,也可以使用 -qnokeyword=keyword_name 选项来禁用该关键字。 | 该功能部件已禁用。 keyword_name 被视为标识令牌。 如果启用了 -qwarn0x 选项,那么当期望打开该功能部件将修改程序的有效性或语义时,将发出一条警告消息。 |


- asm
- 直接插入
- 限制
- 类型
注:
asm
未保留为 stdc89 或 stdc99 语言级别的关键字。
预定义的宏
__BOOL__ 默认定义为 1;然而,当 -qnokeyword=bool 生效时,它未定义。
__C99_INLINE 当 生效时,定义为1。 -qkeyword=inline
- __C99_RESTRICT 在 -qkeyword=restrict 生效时定义为 1。
当 -qkeyword=asm 生效时,__IBM_GCC_ASM被定义为1。 (在 C++ 中,缺省情况下定义了该值。)
- __IBM__TYPEOF__ 在 -qkeyword=typeof 生效时定义为 1。
示例

bool
:xlc++ -qkeyword=bool


typeof
:xlc -qkeyword=typeof
