compiler-warnings相关内容

MSVC -Wall 标准标题中的数千条警告是怎么回事?

有些人似乎建议您使用 -Wall,但是当我在一个只有 main.cpp 和一些包含的小型测试项目中这样做时,我收到了 5800 条警告,其中大部分在标准标题或 Windows 标题中. 这是预期的行为吗?如何让我的编译警告免费? 这里只是一些阅读乐趣: 1>c:\program files\microsoft visual studio 10.0\vc\include\stdint. ..
发布时间:2021-12-22 18:19:44 C/C++开发

g++ 如何在忽略函数返回值时获得警告

lint 产生一些警告,如: foo.c XXX 警告 534:忽略函数 bar() 的返回值 来自 lint 手册 534 忽略函数的返回值 'Symbol'(与位置比较)A返回值的函数是只是为了副作用而调用,因为例如,在一个声明本身或逗号的左侧操作员.尝试:(无效)函数();到调用一个函数并忽略它的返回价值.另见 fvr、fvo 和 fdr§5.5“标志选项"中的标志. ..
发布时间:2021-12-18 23:21:37 C/C++开发

禁用 GCC 中的特定警告

在 Microsoft 编译器上,可以使用 #pragma 禁用特定警告,而不会禁用其他警告.如果编译器对“必须完成"的事情发出警告,这是一个非常有用的功能. 此时的 GCC 是否有类似的功能?这似乎是一个足够明显的功能,令人难以想象的是它还没有此功能,但网络上的旧信息表明此功能不存在. 在 GCC 中使用什么? 特别是,我喜欢使用多字符常量,比如“abc".这些有效地评估为基数 ..
发布时间:2021-12-18 23:15:30 其他开发

gcc 未能警告未初始化的变量

以下代码有一个可能未初始化的变量.似乎 gcc 应该生成警告,但不是: $ cat a.cint foo(int b) {一个;如果 (b)一 = 1;返回一个;}$ gcc-4.7 -c -Wall -Wmaybe-uninitialized -o a.o ./a.c$ gcc-4.7 -v使用内置规范.COLLECT_GCC=gcc-4.7COLLECT_LTO_WRAPPER=/usr/l ..
发布时间:2021-12-18 23:10:18 其他开发

如何打开(字面意思)所有 GCC 的警告?

我想启用 -- 字面意思 -- 所有 GCC 的警告.(你会认为这很容易...) 您可能会认为 -Wall 可以解决问题,但事实并非如此!仍然需要-Wextra. 你会认为 -Wextra 可能会成功,但不是!并非所有警告都在此处列出(对于例如,-Wshadow) 是通过这个启用的.我仍然不知道这个列表是否全面. 我如何告诉 GCC 启用(没有 if、and 或 but !)所有 ..
发布时间:2021-12-18 22:39:53 C/C++开发

选择性地仅对翻译单元的一部分禁用 GCC 警告

与此 MSVC 预处理器代码最接近的 GCC 是什么?> #pragma warning( push )//保存当前警告状态.#pragma warning( disable : 4723 )//C4723:潜在的除以 0//会生成警告 4723 的代码.#pragma warning( pop )//将警告恢复到以前的状态. 我们在通常包含的标头中有代码,我们不想为其生成特定警告.但是,我们 ..
发布时间:2021-12-18 22:26:42 C/C++开发

Java Class.cast() 与 cast 运算符

在我的 C++ 时代学习过 C 风格强制转换操作符的弊端,起初我很高兴地发现在 Java 5 中 java.lang.Class 已经获得了一个 cast 方法. 我认为我们终于有一种面向对象的方式来处理转换. 原来 Class.cast 与 C++ 中的 static_cast 不同.它更像是reinterpret_cast.它不会在预期的地方生成编译错误,而是会推迟到运行时.这是一 ..
发布时间:2021-12-15 09:39:44 Java开发

动态转发:抑制未完成执行警告

我有一个类公开了一些方法,其实现由内部对象提供. 我使用前向调用在运行时将方法调用分派到内部对象,但 XCode 抱怨,因为它找不到已声明方法的实现. 我在 SO 上发现了一些其他类似的问题,但所有这些问题都通过设计更改得到了解决. 我不想在这里讨论设计,但如果有人对此有任何建议,我有一个 open question on Code Review,更适合这类讨论. 我的问题 ..

如何禁用几行代码的 GCC 警告

在 Visual C++ 中,可以使用 #pragma warning (disable: ...).我还发现在 GCC 中你可以 覆盖每个文件编译器标志.我如何为“下一行"或使用 GCC 的代码区域周围的推送/弹出语义执行此操作? 解决方案 看起来这个 可以做到.我无法确定它添加的 GCC 版本,但它是在 2010 年 6 月之前的某个时间. 这是一个例子: #pragma GC ..
发布时间:2021-12-02 00:05:44 其他开发

警告:函数的隐式声明

我的编译器 (GCC) 给了我警告: 警告:函数的隐式声明 请帮助我理解为什么会出现这种情况. 解决方案 您正在使用编译器尚未看到其声明(“prototype")的函数. 例如: int main(){乐趣(2,“21");/* 编译器没有看到声明.*/返回0;}int fun(int x, char *p){/* ... */} 你需要在 main 之前声明你的函数 ..
发布时间:2021-12-01 23:57:06 其他开发

为什么我应该总是启用编译器警告?

我经常听到在编译 C 和 C++ 程序时我应该“始终启用编译器警告".为什么这是必要的?我怎么做? 有时我也听说我应该“将警告视为错误".我是不是该?我该怎么做? 解决方案 为什么要启用警告? C 和 C++ 编译器在报告一些常见的程序员错误默认方面是出了名的糟糕,例如: 忘记初始化变量 忘记从函数中返回一个值 printf 和 scanf 系列中的参数与格式字符串不 ..
发布时间:2021-12-01 14:56:18 C/C++开发

如何在没有“可能在声明前使用"的情况下访问局部范围内的全局变量?-错误?

我收到此警告:警告:$a 可能在声明前使用. 对于我的函数: Func test()如果 (IsDeclared("a")) 那么控制台写入($a)别的ConsoleWrite("未声明")万一结束函数全局 $a = "测试"测试() 可以通过使用全局变量作为函数的参数来避免.但我需要这个构造,因为它与我不想每次需要变量时都执行的文件操作相关联. 如何在不生成“可能在声明前使用"-错误​ ..
发布时间:2021-11-30 20:58:10 其他开发

更强大的 AC_COMPILE_IFELSE 功能测试?

Autoconf 的 AC_COMPILE_IFELSE 在不同的编译器(如 Sun 的 C++ 编译器和 IBM 的 xlC 编译器)下为我们错误检测功能.AC_COMPILE_IFELSE 似乎会检查返回值,但有些编译器不会设置它或将其设置为意外值.稍后,我们使用不可用的选项. 在我的非 Autoconf 构建脚本中,我使用 "fatal|error|illegal|unrecogniz ..
发布时间:2021-11-30 19:13:53 C/C++开发

assert() 带有消息

我看到某处断言以下列方式与消息一起使用: assert(("message", condition)); 这似乎很好用,只是 gcc 抛出以下警告: 警告:逗号表达式的左侧操作数无效 如何停止警告? 解决方案 使用 -Wno-unused-value 停止警告;(选项 -Wall 包括 -Wunused-value). 我认为更好的是使用另一种方法,例如 assert(co ..
发布时间:2021-11-30 11:30:02 其他开发

Java 中有效的@SuppressWarnings 警告名称列表是什么?

Java 中有效的 @SuppressWarnings 警告名称列表是什么? @SuppressWarnings("") 中 ("") 之间的位. 解决方案 这取决于您的 IDE 或编译器. 这是 Eclipse Galileo 的列表: all 取消所有警告 装箱以抑制与装箱/拆箱操作相关的警告 强制转换以抑制与强制转换操作相关的警告 dep-ann 抑制与已弃用 ..
发布时间:2021-11-25 17:08:23 Java开发

如何让 Intellij Idea 显示编译警告?

我正在使用 Intellij Idea 10 和 Java 6 JDK Update 7.当我运行 Build -->Rebuild Project 命令,并且 (javac) 编译生成警告,Idea 不会在 Messages 视图中显示什么这些警告.我只看到一个“信息:XX 警告"节点,但无法展开它以查看实际警告.或者我只是在状态栏上看到一条消息“编译成功完成,但出现 XX 警告".对于错误,I ..
发布时间:2021-11-22 16:35:32 Java Web开发

如何抑制有关已弃用 api 的 javac 警告?

当我编译时,javac 输出: 注意:某些输入文件使用或覆盖已弃用的 API.注意:使用 -Xlint:deprecation 重新编译以获取详细信息.` 我希望取消此警告.尝试 -Xlint:none 似乎没有帮助. 解决方案 根据我在文档中的说法,您无法在命令行上执行此操作. 根据javac 文档,-Xlint:none 仅禁用“Java 语言规范未强制要求"的警告.语言规范 ..
发布时间:2021-11-22 16:10:42 Java开发