问题标签 [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 投票
3 回答
92697 浏览

c - C警告函数'exit'的隐式声明

这是我的警告。

我怎样才能删除它。

我正在使用 linux 和 gcc 编译器。

0 投票
2 回答
5387 浏览

32bit-64bit - 我在 32 位架构中的 gcc 编译中有以下警告,但在 64 位架构中没有任何此类警告

symbol.c:在函数“symbol_FPrint”中:

在符号.c

SYMBOL 定义为:

当我用 '%zu' 替换 '%ld' 时,我收到以下警告:

注意:从这里开始,它已于 2010 年 3 月 26 日进行了编辑,并添加了以下问题,因为它与上述问题相似。

我有以下声明:

在 64 位架构中编译时收到的警告是:

以下是参数的定义:

我怎样才能摆脱这个,以便我可以在 32 位和 64 位架构中编译而不发出警告?

它的解决方案是什么?

0 投票
1 回答
245 浏览

c - 我有以下 gcc 编译警告

对应的代码是:

符号定义为:

任何努力都将受到高度赞赏。

PRECEDENCE 已修改为:

以下是 symbol_Ordering 的一些附加信息:

{ 返回符号_ORDERING++; }

0 投票
2 回答
2477 浏览

gcc - 使用自动工具时 PACKAGE_NAME 和其他宏冲突

当对库和基于该库构建的软件使用自动工具(带有config.h文件)时,编译器会抱怨重新定义了某些宏(PACKAGE_NAME、PACKAGE_TARNAME 等)。

我怎样才能防止这种情况?

库中需要该config.h文件以将其设置传播到使用它的软件。

现在我有一个library_config.h包含原始文件的包装脚本,config.h并在用户不使用自动工具时提供默认值,但即使取消定义该包中的宏,我也会收到来自 gcc 的重新定义警告。

我相信最好的选择是拥有一个没有该宏的库:使用自动工具时,如何避免在库中定义 PACKAGE、PACKAGE_NAME 等?

编辑:尝试更好地解释。

在库中使用AC_CONFIG_HEADER宏时,configure.ac我会生成一个config.h包含许多有用定义的文件。这个定义对于库本身(对于它的编译部分和它的头文件)和客户端软件都很有用。然而遗憾的是,AC_CONFIG_HEADER将我需要的有用宏与其他具有固定名称(PACKAGE、PACKAGE_NAME)的通用定义混合在一起,当自动工具也用于客户端软件配置时会发生冲突。

0 投票
2 回答
264 浏览

c - 为什么 gcc4 会发出警告以及如何避免它

我有一个声明为的函数:

和工会

当我编译以下代码时:

启用警告-Wconversion我收到以下警告:

为什么 gcc4 不成功以及如何修复它???

0 投票
3 回答
8811 浏览

c++ - 帮助解决这些警告。[遗产]

我有一组代码,它模仿了一个基本的图书馆编目系统。有一个名为 items 的基类,其中定义了通用 id、title 和 year 变量以及 3 个其他派生类(DVD、Book 和 CD)。

基础[物品]

派生的 [DVD,Book,CD]。

程序运行,但是我收到以下警告,我不知道如何解决这些问题。

0 投票
3 回答
4882 浏览

c - 为什么在将有符号文字分配给无符号类型时 GCC 不产生警告?

这个网站上的几个问题揭示了混合有符号和无符号类型时的陷阱,大多数编译器似乎在生成这种类型的警告方面做得很好。但是,将有符号常量分配给无符号类型时,GCC 似乎并不关心!考虑以下程序:

使用 GCC 4.2.1 进行如下编译不会在控制台上产生输出:

生成的可执行文件生成以下输出:

-30将有符号值分配给无符号整数变量时,GCC 是否有任何原因不会生成任何警告或错误消息y

0 投票
2 回答
496 浏览

gcc - 出错 - gcc 编译器警告可以阻止 C 文件被编译成目标文件吗?

我正在尝试为我的 Linux 机器编译无线网卡驱动程序,但我遇到了 Make 命令的问题。在编译过程中,我通常会在一些正在编译的 C 文件上看到警告;尽管有警告,这些文件仍然能够编译为目标文件。

但是,当 Make 进程遇到一个名为 rtmp_wext.c 的文件时,编译器会生成大量警告,然后整个 Make 进程停止并返回错误 1 ​​的退出状态,即make: *** [rtmp_wext.o] Error 1. 通常我会看到 C 文件出现错误,导致编译停止。这似乎是编译器警告第一次阻止文件转换为目标文件。这是可能的还是其他原因导致编译不成功?

0 投票
3 回答
9008 浏览

c++ - C ++:警告:“...”声明的可见性比其字段“...::”的类型更高'

我收到这两个警告(在 MacOSX 上使用 GCC 4.2):

/Users/az/Programmierung/openlierox/build/Xcode/../../src/main.cpp:154:0 /Users/az/Programmierung/openlierox/build/Xcode/../../src/main .cpp:154:警告:“startMainLockDetector()::MainLockDetector”声明的可见性高于其字段“startMainLockDetector()::MainLockDetector::<anonymous>”的类型

/Users/az/Programmierung/openlierox/build/Xcode/../../src/main.cpp:154:0 /Users/az/Programmierung/openlierox/build/Xcode/../../src/main .cpp:154:警告:“startMainLockDetector()::MainLockDetector”声明的可见性比其基本“Action”更高

在这段代码中:

我不确定这些警告的含义(什么可见性?)以及如何解决它们。(我真的希望 MainLockDetector 类仅对该函数是本地的。)

我已经用许多其他编译器(clang、GCC 3.*、GCC 4.0、GCC 4.4 等)编译了相同的代码,并且从未收到任何关于此代码的警告。

0 投票
3 回答
1437 浏览

c - “警告:假设循环不是无限的”的解释是什么

我刚刚决定将尽可能多的变量从unsignedtoint和重新编译有问题的代码时,受到以下警告消息的欢迎:

有问题的行:

这个循环是 60 行代码(包括空格/括号等),其中有一个goto,并且至少出现一次continue.

在这种情况下,我想我很感激 GCC 假设这个循环不是无限的,因为它永远不应该无限循环。

GCC 想在这里告诉我什么?

警告的语法几乎暗示该警告应在其他警告的上下文中进行,但在该上下文中没有。

[编辑] 这完全是我自己的错。我在没有真正理解它们的情况下从这里的一个问题中窃取了一些优化和警告选项,并且已经忘记了它们。

请参阅 Mark Rushakoff 的回答,此外,我还曾经-Wunsafe-loop-optimizations明确警告 GCC 是否正在对循环进行假设。见http://gcc.gnu.org/onlinedocs/gcc/Optimize-Options.html