相关疑难解决方法(0)

在GCC/G ++编译器中使用-pedantic的目的是什么?

这张便条说:

-ansi:告诉编译器实现ANSI语言选项.这会关闭GCC的某些与ANSI标准不兼容的"功能".

-pedantic:与-ansi此结合使用,这告诉编译器严格遵守ANSI标准,拒绝任何不符合的代码.

首先要做的事情:

  • GCC/G ++编译器的选项-pedantic和-ansi选项的目的是什么(我无法理解上面的描述)?
  • 谁能告诉我使用这两个选项的合适情况?
  • 我应该什么时候使用它们?
  • 它们重要吗?

c c++ gcc g++

127
推荐指数
6
解决办法
10万
查看次数

80
推荐指数
7
解决办法
3万
查看次数

禁用每个 gcc 扩展 (C++)

标题很清楚,有没有办法在编译某些 C++ 代码时禁用 gcc(扩展)的每个非标准功能。我以前总是与and-pedantic-errors一起使用,根据 gcc 手册页,第一个执行以下操作-Wall-Wextra

每当基本标准(参见 -Wpedantic)需要诊断时就给出错误,在某些情况下相当于 -Werror=pedantic,因为此选项会启用错误,而不是特定库的限制。但是,如果 -Wpedantic 与 -Wformat 一起使用,则 -pedantic-errors 会将警告变为错误。-Wall 或 -Wpedantic。

然而,其结果是它几乎禁用了所有不符合标准的扩展。我对以下代码使用 gcc 编译感到震惊

void foo(std::vector<auto>) { ... }
Run Code Online (Sandbox Code Playgroud)

使用该-std=c++20标志,如果我们将其降低到,-std=c++17我们会收到一条错误消息,提示使用它,-std=c++20因为它是“c++20 功能”。然而 clang 或 msvc 都不愿意编译这个。经过进一步研究后,我收到以下通知

这是一个 GCC 扩展,并且在设计上被接受。

-pedantic-errors这是相当令人不安的,因为即使是 , 的保护措施-Wall也-Wextra没有注意到这一点,这让我质疑 gcc 可能会默默地传递哪些其他扩展。那么问题来了;有没有办法完全禁用每个 gcc 扩展?

编辑:来自如何禁用 GNU C 扩展?

你不能

c++ gcc g++ c++20

11
推荐指数
0
解决办法
764
查看次数

标签 统计

gcc ×3

c ×2

c++ ×2

g++ ×2

c++20 ×1

compiler-errors ×1