配置编译器:编译器扩展

C++ 标准定义了程序在特定情况下应如何运行的规则。在大多数情况下,编译器会遵循这些规则。然而,许多编译器对语言进行了自己的更改,通常是为了增强与其他版本的语言(例如 C99)的兼容性,或者出于历史原因。这些特定于编译器的行为称为编译器扩展

编写使用编译器扩展的程序允许您编写与 C++ 标准不兼容的程序。使用非标准扩展的程序通常不会在其他编译器(不支持这些相同的扩展)上编译,或者即使编译,也可能无法正确运行。

令人沮丧的是,编译器扩展通常是默认启用的。这对于新学习者来说尤其有害,他们可能认为某些有效的行为是官方 C++ 标准的一部分,而事实上他们的编译器只是过于宽容。

由于编译器扩展从来都不是必需的,并且会导致您的程序不符合 C++ 标准,因此我们建议关闭编译器扩展。

禁用编译器扩展

对于 Visual Studio 用户

要禁用编译器扩展,请在“解决方案资源管理器”窗口中右键单击您的项目名称,然后选择“属性”

配置编译器:编译器扩展

“项目”对话框中,首先确保“配置”字段设置为“所有配置”

然后,单击C/C++ > 语言选项卡,并将一致性模式设置为yes(/permissive-)(如果默认情况下尚未设置)。

配置编译器:编译器扩展

对于 Code::Blocks 用户

通过设置菜单 > 编译器 > 编译器标志选项卡禁用编译器扩展,然后找到并选中-pedantic-errors选项。

配置编译器:编译器扩展

对于 GCC/G++ 用户

您可以通过将-pedantic-errors标志添加到编译命令行来禁用编译器扩展。

对于 VS Code用户

  • 打开tasks.json 文件,查找"args",然后找到该部分中的行"${file}"
  • 在该"${file}"行上方添加一个包含以下命令的新行:

"-pedantic-errors",

截至撰写本文时,VS Code 不会自动在缺少换行符的代码文件末尾添加换行符(C++ 标准迂腐地要求这样做)。幸运的是,我们可以告诉 VS Code 这样做:

  • 打开 VS Code 并转到文件(如果使用 Mac,则为 Code)> 首选项 > 设置。这将打开一个设置对话框。
  • 进入insert final newline搜索栏。
  • “工作空间设置”“用户设置”选项卡中,确保选中标记为“文件:插入最终换行符”的复选框。

原创文章,作者:jkhxw,如若转载,请注明出处:https://www.jkhxw.com/cpp-compiler-extensions/

(0)
上一篇 2023年9月27日 下午11:31
下一篇 2023年9月28日 下午10:54

相关推荐

发表回复

您的电子邮箱地址不会被公开。 必填项已用*标注