代码块 IDE 中的 'user keywords' 是什么?

What are 'user keywords' in the codeblocks IDE?

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

我最好的猜测是它确实意味着 'symbolic constants'。 Google 和 Stack overflow 似乎没有给我任何关于它们是什么的信息。但是我知道您不能真正创建自己的关键字,因为它们是 C/C++ 语言的一部分。

有什么想法吗?只是好奇。

However I do know that you can't really create your own keywords because they are part of the C/C++ language

您无法以编译器能够理解的方式创建自己的。您需要将 IDE 所做的与编译器所做的分开。 IDE 具有使用特殊颜色显示关键字的功能。这很容易理解。但是 CodeBlocks 不依赖于您使用的编译器 "figure out" 一个标记是一个关键字。它有自己的处理器。

那么当您更新编译器并且它支持更新版本的语言时会发生什么?您的 IDE 无法神奇地效仿。它不支持那些开箱即用的新关键字。这就是它允许您指定 "user keywords" 的原因。因此,您可能会看到突出显示的新关键字。

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

调用 Qt 信号时,用户关键字的示例可能是 emit。虽然 qt 信号在技术上是功能性的,但它们是元编译的,并且旨在改变其 class 范围之外的状态。这就是为什么许多开发人员喜欢显式装饰它们的原因。

通常emit 评估 宏扩展为空

请参阅此问题以了解 emit 的工作原理:

Using emit vs calling a signal as if it's a regular function in Qt

编译器通常会有自己的关键字,但这些关键字并未正式包含在标准中。例如,GCC (C++) 支持许多 C11 关键字,如 __thread__restrict。您可能需要手动添加这些以获得语法突出显示。