C++ 什么是';用户关键字';在代码块IDE中?

C++ 什么是';用户关键字';在代码块IDE中?,c++,c,ide,codeblocks,C++,C,Ide,Codeblocks,我刚刚注意到,codeblocksIDE中有一些有趣的东西,通过编辑器设置>语法突出显示,说“用户关键字”,我知道它们是保留关键字,如for、int、signed等,但它们应该是什么 我最好的猜测是,它实际上意味着“符号常量”。Google和Stack overflow似乎没有给我任何关于它们是什么的信息。然而,我知道你不能真正创建自己的关键字,因为它们是C/C++语言的一部分 有什么想法吗?只是好奇 但是我知道你不能真正创建自己的关键字,因为它们是C/C++语言的一部分 您不能以编译器能够理解

我刚刚注意到,
codeblocks
IDE中有一些有趣的东西,通过编辑器设置>语法突出显示,说“用户关键字”,我知道它们是保留关键字,如for、int、signed等,但它们应该是什么

我最好的猜测是,它实际上意味着“符号常量”。Google和Stack overflow似乎没有给我任何关于它们是什么的信息。然而,我知道你不能真正创建自己的关键字,因为它们是
C/C++
语言的一部分

有什么想法吗?只是好奇

但是我知道你不能真正创建自己的关键字,因为它们是C/C++语言的一部分

您不能以编译器能够理解的方式创建自己的。您需要将IDE的功能与编译器的功能分开。IDE有一个显示具有特殊颜色的关键字的工具。这很容易理解。但是代码块并不依赖于您用来“弄清楚”令牌是关键字的编译器。为此,它有自己的处理器


那么,当您更新编译器并且它支持更新版本的语言时会发生什么呢?您的IDE无法神奇地跟随。它不支持那些现成的新关键字。这就是为什么它允许您指定“用户关键字”。所以你可以看到新的关键词突出。

你是对的,你不能在C++中创建新的关键词。正如您所注意到的,此选项用于语法高亮显示。如果要在代码编辑器中突出显示单词,可以在其中输入任何单词。代码编辑器将突出显示您的单词,以便于在代码中识别它们。突出显示或换句话说,着色是该设置的唯一目的。

调用Qt信号时,用户关键字的示例可能是
emit
。虽然qt信号在技术上是函数,但它们是元编译的,设计用于在类范围外改变状态。这就是为什么许多开发人员喜欢显式地装饰它们

通常,
emit
对宏进行求值,然后将宏扩展为零

有关发射工作原理的说明,请参见此问题:


通常,编译器会有自己的关键字,而这些关键字并没有正式列入标准。例如,GCC(C++)支持许多C11关键字,如
\uuuuThread
\uuuuuRestrict
。您可能需要手动添加这些以获得语法突出显示。

我更愿意说,
emit
是宏扩展的(不是“评估的”)为零