问题标签 [gcc-warning]

For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.

0 投票
1 回答
1063 浏览

bash - bash 中 gcc 警告的语法高亮显示

有没有办法为 gcc/g++ 警告输出启用高亮方案?当消息流过时,我想要一种简单的方法来发现来自编译器的警告(亮红色?)。

0 投票
8 回答
79184 浏览

c++ - Pedantic gcc 警告:函数返回类型的类型限定符

当我第一次使用 GCC 4.3 编译我的 C++ 代码时(在使用选项成功编译它并且在 4.1、4.0、3.4 上没有警告之后-Wall -Wextra)我突然收到了一堆形式的错误warning: type qualifiers ignored on function return type

考虑temp.cpp

运行g++ temp.cpp -Wextra -c -o blah.o

有人可以告诉我我做错了什么违反了 C++ 标准吗?我想当按值返回时,前导const是多余的,但我无法理解为什么需要用它生成警告。还有其他地方我应该放弃 const 吗?

0 投票
4 回答
3401 浏览

gcc - 如何在 C 中键入转换文字

我有一个小样本功能:

我的编译器警告我,比较 (x>=VALUE) 在所有情况下都是正确的,这是正确的,因为 x 是一个无符号字符并且 VALUE 用值 0 定义。所以我将代码更改为:

但警告又来了。我用三个 GCC 版本(所有版本 > 4.0,有时您必须启用 -Wextra)对其进行了测试。

在改变的情况下,我有这个明确的演员表,它应该是一个有符号的 int 比较。为什么它声称比较总是正确的?

0 投票
21 回答
249898 浏览

c++ - 如何最好地消除有关未使用变量的警告?

我有一个跨平台应用程序,在我的一些函数中,并非所有传递给函数的值都被使用。因此,我收到来自 GCC 的警告,告诉我有未使用的变量。

围绕警告进行编码的最佳方式是什么?

函数周围的#ifdef?

这很丑陋,但似乎是编译器更喜欢的方式。

或者我是否在函数末尾为变量分配零?(我讨厌它,因为它正在改变程序流程中的某些内容以使编译器警告静音)。

有正确的方法吗?

0 投票
2 回答
3007 浏览

xcode - 是否有 gcc/Xcode 编译指示来抑制警告?

是否有#pragmagcc/Xcode 抑制特定警告,类似于 Java 的@SuppressWarning注释?

我按照规则进行编译-Wall,但在某些情况下我只想忽略特定警告(例如,在编写一些快速/脏代码只是为了帮助调试某些东西时)。

我不是在寻找“修复代码”的答案。

0 投票
3 回答
2966 浏览

c - C:警告隐式 long 到 int 的转换

我想知道是否有办法告诉编译器(我在 gcc 版本 4.1.2 20080704(Red Hat 4.1.2-46)或 icc 11.1 上)在 long-to-int 隐式转换发生时抛出警告地方。例如,编译test.c包含代码的文件:

和:

不会产生任何警告。运行生成的二进制文件为

正如预期的那样,我得到:

因为数字 12345678901 已经溢出 int 但不是 long。我希望编译器在可能发生这种情况时告诉我。选项 -Wconversion 出人意料地(对我来说)不会这样做。

谢谢,

米歇尔

0 投票
10 回答
55052 浏览

gcc - 如何抑制库头文件中的 GCC 警告?

我有一个使用 log4cxx、boost 等库的项目,其标头会生成大量(重复)警告。有没有办法抑制来自库包含的警告(即#include <some-header.h>)或来自某些路径的包含?我想像往常一样在项目代码上使用 -Wall 和/或 -Wextra,而不会掩盖相关信息。我目前在 make 输出上使用 grep,但我想要更好的东西。

0 投票
1 回答
1108 浏览

c - 为什么将 double 分配给 int 不会触发 gcc 警告?

即使使用 -Wall 选项也不会引起任何警告。有时,我想知道精度损失在哪里。为什么 gcc 不支持此警告,而 msvc 支持此警告?

谢谢。

编辑:我的 gcc -v 显示

Configured with: ../../gcc-4.4.1/configure --prefix=/mingw --build=mingw32 --enable-languages=c,ada,c++,fortran,objc,obj-c++ --disable-nls --disable-win32-registry --enable-libgomp --enable-cxx-flags='-fno-function-sections -fno-data-sections' --disable-werror --enable-threads --disable-symvers --enable-version-specific-runtime-libs --enable-fully-dynamic-string --with-pkgversion='TDM-2 mingw32' --enable-sjlj-exceptions --with-bugurl=http://www.tdragon.net/recentgcc/bugs.php

0 投票
4 回答
994 浏览

c - C/GCC 警告 - 一次编写并到处测试?

我正在用 ANSI C 编写一个命令行程序来解析 Quake 2 地图文件,以报告正在使用多少实体和纹理。我的开发机器是 MacBook。我正在 OS X Snow Leopard(32 位)、Windows XP(32 位)和 Vista(64 位)以及 Ubuntu 9.10(32 位)上进行测试。

该代码在 OS X 和 GCC 4.2 上完美无缺。其他平台,也不是那么完美。

Visual Studio 2005 抱怨 main() 块中间有一个数组声明——数组的大小信息直到那时才可用——应该在顶部声明。通过在顶部声明一个指针并编写一个函数来创建数组来解决这个问题。

Windows 上的 Dev-C++ 和 GCC (3.4) 没有任何抱怨。

Windows 上的 Cygwin 和 GCC (4.4) 抱怨数组下标具有 char 类型。我添加了 (int) 强制转换来解决这个问题。

Ubuntu 和 GCC (4.4) 抱怨忽略 fread 的返回值。尽管我在其他地方读到过,我可能是 Ubuntu 打包 GCC 方式中的一个错误。在我使用 fread in 的上下文中,这似乎是可以安全忽略的。该警告仅与 -O3 标志一起出现。

除了 Visual Studio 2005,我测试的所有编译器都是 GCC 的某个版本。追查所有这些错误和警告是一件非常痛苦的事情。到目前为止,我一直在 Makefile 中使用以下标志:

调试:-pedantic -Wall

释放:-O3

我应该使用一组 GCC 标志来捕获我的主要开发机器上的所有错误吗?还是一次编写,到处测试是生活中的事实?

0 投票
4 回答
8419 浏览

c - 移植为 32 位到 64 位编写的 C 源代码

我试图移植到 64 位的 C 源代码在 32 位环境中运行时没有任何警告。当我使用 compile gcc (Ubuntu 4.4.1-4ubuntu9) 4.4.1 在 64 位 Linux 环境中编译时,它主要显示以下警告:

上面的警告是最多的。我使用了uintptr_t类型,大部分警告都被删除了。我可以使用uintptr_t将类型int /unsigned int更改为 有利的 64 位。但是如何更改以下类型以兼容 64 位:

我更改了以下代码:

进入

我收到以下警告:

此外,在将类型 def 更改为早期的 int 或 unsigned int 的 uintptr_t 后,我​​遇到了以下大部分警告:

函数 tptp_StringCopy 如下:

我怎样才能摆脱这些警告?