问题标签 [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.
c++ - 修复 GCC 中的“比较总是错误的......”警告
我遇到了一个问题,我确信它很容易解决,但我不知所措......
我有一个执行以下代码的模板:
现在,出于显而易见的原因,当将此代码编译为无符号类型时,GCC 会给我一个警告(由于数据类型的范围有限,比较总是错误的)。我完全理解这背后的原因,我进行了 numeric_limits 检查,看看我是否可以让编译器闭嘴(它适用于 MSVC)。唉,在 GCC 下我得到了警告。有什么办法(除了禁用我什至不知道你是否可以用 GCC 做的警告)来修复这个警告吗?无论如何,代码永远不会被调用,我认为优化器也会将其编译出来,但我无法摆脱警告。
有人可以给我一个解决方案吗?
干杯!
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 位的行为是否会发生变化。
谢谢阿皮特
c++ - 如何消除 GCC 中的外部库/第三方警告
在我正在开发的软件项目中,我们使用了某些 3rd 方库,可悲的是,它们会产生烦人的 gcc 警告。我们正在努力清理所有警告代码,并希望在 GCC 中启用将警告视为错误 (-Werror) 标志。有没有办法让这些我们无法修复的第 3 方生成的警告消失?
c - 删除字符串 C 的第一个字符
我试图删除字符串的第一个字符并保留其余部分,我当前的代码无法编译并且我对如何修复它感到困惑。
我的代码:
Gcc:“警告:返回使指针从整数而不进行强制转换”
另外:“char * newStr (char * charBuffer)”需要保持不变。
c - gcc 警告:标量初始化器周围的大括号
我有如下定义的查找表,我正在使用 GCC。当我编译时,我收到警告
这个警告是什么意思?我应该如何初始化这个 LUT?我在初始化这个结构时犯了错误吗?
帮助!!
c++ - 有符号/无符号比较和 -Wall
我最近开始使用 -Wall 编译器开关来尝试提高我的代码质量。它正在(正确地)给出关于这个小片段的警告......
因为 number1.array.size 是无符号的(它是 std::vector 上的 size 方法)。由于循环中的测试是 i >= 0,因此必须对 i 进行签名,否则它不起作用。看来我有三个选择;避免使用 -Wall、忽略警告或引入辅助元素...
这些似乎都不是特别可取的。您能否提出任何替代方案,或就在这种情况下我应该做什么提出建议?
nginx - 在 Linux 上构建 Nginx 时如何抑制已知警告?
我是一个 linux 爱好者,第一次尝试在 Debian (Lenny) 上构建 nginx。
构建 nginx 的尝试失败,我收到关于 sys_errorlist 和 sys_nerr 的已知警告,如下所述:http: //nginx.org/en/docs/sys_errlist.html
文档表明这是一个我可以忽略的警告。我的问题是我需要在make中包含哪些标志来告诉它忽略这些警告?
我一直在寻找没有真正线索的标志选项,搜索只会告诉我可以忽略警告。这可能是一个显而易见的答案,也许为什么我找不到任何发布的东西,所以我问那些比我聪明的人。谢谢......
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
标志。
c - 如何抑制 C 中的“未使用参数”警告?
例如:
在 C++ 中,我能够对/*...*/
参数进行注释。但当然不是在 C 中,它给了我错误:
错误:参数名称省略
c - 转换为 void 不会删除 warn_unused_result 错误
在测试中,我会丢弃任何东西,stderr
因为它会使测试用例的输出变得混乱。我正在使用以下代码:
编译时-Wall -Werror
出现错误
这是预期的。但是,通常的强制转换解决方案void
似乎不起作用。也就是说,将代码更改为
仍然产生相同的警告。我不在乎这个函数是否失败,因为最坏的情况是一些额外的输出。我还有其他方法可以解决这个问题吗?
编辑:我知道我可以引入一个额外的不必要的变量。我真的很想知道为什么强制转换为 void 不起作用。
更新: 我决定这样做:
仔细阅读freopen
文档后,我看到如果打开/dev/null
失败,stderr
仍然会被销毁。这解决了这个问题。