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

c++ - 修复 GCC 中的“比较总是错误的......”警告

我遇到了一个问题,我确信它很容易解决,但我不知所措......

我有一个执行以下代码的模板:

现在,出于显而易见的原因,当将此代码编译为无符号类型时,GCC 会给我一个警告(由于数据类型的范围有限,比较总是错误的)。我完全理解这背后的原因,我进行了 numeric_limits 检查,看看我是否可以让编译器闭嘴(它适用于 MSVC)。唉,在 GCC 下我得到了警告。有什么办法(除了禁用我什至不知道你是否可以用 GCC 做的警告)来修复这个警告吗?无论如何,代码永远不会被调用,我认为优化器也会将其编译出来,但我无法摆脱警告。

有人可以给我一个解决方案吗?

干杯!

0 投票
5 回答
162 浏览

c - 关于“int”风味操作的疑问

我对“int”风格(unsigned int、long int、long long int)有以下疑问。

在 32 位系统和 64 位系统中,当我们在 int 及其风格(比如说 long int)之间进行一些操作(*、/、+、-)时,“int”会发生隐式类型转换

例如 :-

诠释 x ; long long int y = 2000;

x = y ; (较高被分配给较低的一个数据截断可能发生)我期待编译器对此发出警告但我没有收到任何此类警告。这是因为这里的“x”发生了隐式类型转换。我正在使用带有 -Wall 选项的 gcc。32 位和 64 位的行为是否会发生变化。

谢谢阿皮特

0 投票
4 回答
10540 浏览

c++ - 如何消除 GCC 中的外部库/第三方警告

在我正在开发的软件项目中,我们使用了某些 3rd 方库,可悲的是,它们会产生烦人的 gcc 警告。我们正在努力清理所有警告代码,并希望在 GCC 中启用将警告视为错误 (-Werror) 标志。有没有办法让这些我们无法修复的第 3 方生成的警告消失?

0 投票
5 回答
17938 浏览

c - 删除字符串 C 的第一个字符

我试图删除字符串的第一个字符并保留其余部分,我当前的代码无法编译并且我对如何修复它感到困惑。

我的代码:

Gcc:“警告:返回使指针从整数而不进行强制转换”

另外:“char * newStr (char * charBuffer)”需要保持不变。

0 投票
5 回答
79927 浏览

c - gcc 警告:标量初始化器周围的大括号

我有如下定义的查找表,我正在使用 GCC。当我编译时,我收到警告

这个警告是什么意思?我应该如何初始化这个 LUT?我在初始化这个结构时犯了错误吗?

帮助!!


0 投票
5 回答
654 浏览

c++ - 有符号/无符号比较和 -Wall

我最近开始使用 -Wall 编译器开关来尝试提高我的代码质量。它正在(正确地)给出关于这个小片段的警告......

因为 number1.array.size 是无符号的(它是 std::vector 上的 size 方法)。由于循环中的测试是 i >= 0,因此必须对 i 进行签名,否则它不起作用。看来我有三个选择;避免使用 -Wall、忽略警告或引入辅助元素...

这些似乎都不是特别可取的。您能否提出任何替代方案,或就在这种情况下我应该做什么提出建议?

0 投票
1 回答
184 浏览

nginx - 在 Linux 上构建 Nginx 时如何抑制已知警告?

我是一个 linux 爱好者,第一次尝试在 Debian (Lenny) 上构建 nginx。

构建 nginx 的尝试失败,我收到关于 sys_errorlist 和 sys_nerr 的已知警告,如下所述:http: //nginx.org/en/docs/sys_errlist.html

文档表明这是一个我可以忽略的警告。我的问题是我需要在make中包含哪些标志来告诉它忽略这些警告?

我一直在寻找没有真正线索的标志选项,搜索只会告诉我可以忽略警告。这可能是一个显而易见的答案,也许为什么我找不到任何发布的东西,所以我问那些比我聪明的人。谢谢......

0 投票
4 回答
12927 浏览

c++ - g++ 警告:无符号表达式 < 0 的比较始终为假

为了编译我的 C++ 代码,我使用了-W导致警告的标志:

警告:无符号表达式 < 0 的比较总是错误的

我相信这被认为是一个错误并已在 GCC 4.3 版本上修复,但我使用的是 GCC 4.1

这里明显有问题的代码:

警告我得到:

dbtempl.cpp:在成员函数 'void ECONZ::FieldGroup::generateCreateMessage(const nz::co::econz::eventServer::ApiEvent::GroupData&, ECONZ::omsgstream&) const'中:dbtempl.cpp:480: 警告: 无符号表达式 < 0 的比较总是假的

我怎样才能阻止这些警告出现?我不想删除-W标志。

0 投票
12 回答
222337 浏览

c - 如何抑制 C 中的“未使用参数”警告?

例如:

在 C++ 中,我能够对/*...*/参数进行注释。但当然不是在 C 中,它给了我错误:

错误:参数名称省略

0 投票
4 回答
5829 浏览

c - 转换为 void 不会删除 warn_unused_result 错误

在测试中,我会丢弃任何东西,stderr因为它会使测试用例的输出变得混乱。我正在使用以下代码:

编译时-Wall -Werror出现错误

这是预期的。但是,通常的强制转换解决方案void似乎不起作用。也就是说,将代码更改为

仍然产生相同的警告。我不在乎这个函数是否失败,因为最坏的情况是一些额外的输出。我还有其他方法可以解决这个问题吗?

编辑:我知道我可以引入一个额外的不必要的变量。我真的很想知道为什么强制转换为 void 不起作用。

更新: 我决定这样做:

仔细阅读freopen文档后,我看到如果打开/dev/null失败,stderr仍然会被销毁。这解决了这个问题。