- android - 多次调用 OnPrimaryClipChangedListener
- android - 无法更新 RecyclerView 中的 TextView 字段
- android.database.CursorIndexOutOfBoundsException : Index 0 requested, 光标大小为 0
- android - 使用 AppCompat 时,我们是否需要明确指定其 UI 组件(Spinner、EditText)颜色
我使用提供内联函数的头文件。对于 GCC -Wconversion 检查,这些函数并不总是保存。
现在我想对我的代码 使用-Wconversion 检查,但想抑制我收到的针对包含文件的警告。编辑:当我将转换检查添加到编译器选项时,我得到了诊断信息,省略了 -Wconversion 给我一个干净的编译器运行。
对应this question我用一些编译指示包围了包含:
#pragma GCC diagnostic push
#pragma GCC diagnostic ignored "-Wconversion"
#include <lpc177x_8x_crc.h>
#pragma GCC diagnostic pop
不幸的是,这不会抑制警告。
警告:从“uint32_t”转换为“int32_t”可能会改变结果的符号 [-Wsign-conversion]
如果您没有可用的 CMSIS,为了便于检查,您甚至可以尝试这样做:
#pragma GCC diagnostic push
#pragma GCC diagnostic ignored "-Wconversion"
int32_t foo(void)
{
uint32_t result;
return result;
}
#pragma GCC diagnostic pop
编译器命令行参数是:
arm-none-eabi-gcc.exe -mthumb -Wshadow -Winit-self -Wredundant-decls -Wcast-align -Wunreachable-code -W -Wextra -Wall -Wformat=0 -Wconversion -g - O0 -ffunction-sections -fdata-sections -g3 -mcpu=cortex-m3 -c foo.c -o foo.o
我使用的是 arm-none-abi-gcc 版本:
gcc 版本 4.7.3 20121207(发布)[ARM/embedded-4_7-branch 修订版 194305](ARM 嵌入式处理器的 GNU 工具)
最佳答案
由于警告消息将相关标志标识为 -Wsign-conversion
,您应该将其添加到编译指示中。
#include <stdint.h>
extern int32_t foo(void);
#pragma GCC diagnostic push
#pragma GCC diagnostic ignored "-Wconversion"
#pragma GCC diagnostic ignored "-Wsign-conversion"
int32_t foo(void)
{
uint32_t result = 0;
return result;
}
#pragma GCC diagnostic pop
如果你注释掉第二个ignored
并用-Wconversion
编译,你会得到错误:
$ gcc -O3 -g -std=c11 -Wall -Wextra -Wmissing-prototypes -Wstrict-prototypes -Wold-style-definition -Werror -Wconversion -c cvt.c
cvt.c: In function ‘foo’:
cvt.c:9:5: error: conversion to ‘int32_t’ from ‘uint32_t’ may change the sign of the result [-Werror=sign-conversion]
return result;
^
cc1: all warnings being treated as errors
$
如果您取消对该 pragma 的注释,您将不会收到任何警告或错误。
(在带有 GCC 4.8.2 的 Mac OS X 10.9.1 Mavericks 上测试 - YMMV!)我注意到苹果提供的 clang
(版本'Apple LLVM 5.0 版(clang-500.2.79 )(基于 LLVM 3.3svn)') 不反对注释掉第二个 ignored
pragma,使用 -Wconversion
或使用 -Wsign-conversion
,我尝试使用代码传递 uint32_t
参数并在返回它之前将其分配给结果,等等(所以它不仅仅是高级优化识别 0 是特殊的,或者返回一个未初始化的变量是未定义的行为等):
#include <stdint.h>
extern int32_t foo(uint32_t v);
#pragma GCC diagnostic push
#pragma GCC diagnostic ignored "-Wconversion"
//#pragma GCC diagnostic ignored "-Wsign-conversion"
int32_t foo(uint32_t v)
{
uint32_t result = v;
return result;
}
#pragma GCC diagnostic pop
关于c++ - 对特定代码行抑制 -Wconversion,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/21050620/
我收到警告 Circular dependency detected! 在 Angular 6 中,我知道为什么会出现这个问题,但这根本不是问题。 我目前正在使用 SVG,按照我的逻辑,我会防止可能出
我试图抑制 clang/gcc 中地址清理程序发出的警告 我的源文件如下所示: int foo(){ double bar[] = {7,8}; return bar[3]; } int ma
我在微服务架构中有一个应用程序。该应用程序从不同的源获取数据,并且从其他各种应用程序获得许多不同的错误响应。某些异常(例如404-Not Found异常)可以引发并返回给最终用户,但其他异常(错误请求
我喜欢使用 readxl包裹。但是,我一直将它用作 RMarkdown 文档和一些 read_excel() 文档的一部分。读入文件时的消息在进行分析时很有用,但在尝试呈现分析时则不然。所以问题是,在
当我编译 JAXB 模式时,生成的类用通用 Javadoc 注释进行修饰。 是否有可能以某种方式抑制生成这些评论? 最佳答案 Annotation to disable JavaDocs Not if
我正在尝试运行专为 Vuze 设计的插件使用Java。为此,我使用这样的命令: /home/x/jre1.6.0_14/bin/java -Dazureus.config.path=/home/x/p
所以 - 我正在使用库 pyminizip - 这是我发现创建受密码保护的 zip 文件的唯一方法。当我使用它时,我收到一个弃用警告:“#”格式需要 PY_SSIZE_T_CLEAN。 现在,我无法控
这个问题在这里已经有了答案: Is ticklabel_format broken? (1 个回答) 关闭 2 年前。 我是 geopandas 的新手,我正在尝试用常规记数法而非科学记数法绘制带有
我从 Valgrind 得到以下日志: MPK ==5263== 4 bytes in 1 blocks are still reachable in loss record 1 of 84 ==52
有什么方法可以抑制 mediawiki 中的贬低警告吗?例如我在个人 wiki 站点的某些页面顶部收到此消息。 Deprecated: Use of MWNamespace::getSubject w
我正在使用 ScheduledThreadPoolExecutor 执行定期任务。 执行必须是周期性的,而不是固定的延迟。 我遇到了以下问题:考虑一个任务的时间为 1 分钟。如果任务需要 5 分钟才能
我是使用 RScaLAPACK 的 R 新手,每次我生成一个新的进程网格时,我都会收到一条消息。 > sla.gridInit(2) [1] "RScaLAPACK:Process Grid Init
我目前正在使用包 readr 读取文件.这个想法是使用 read_delim逐行读取以查找非结构化数据文件中的最大列数。代码输出有 parsing问题。我知道这些并将在导入后处理列类型。有没有办法关闭
所以我试图防止 fatal error 阻止我的脚本运行 所以我将错误报告设置为0: error_reporting(0); 然后我添加了一些垃圾代码.. junk code~~~~trolololo
在使用 summary() 函数(例如,stata 中的 absorb() 函数的等价物)时,是否有一种方法可以抑制线性模型中固定效应的系数。例如,我希望汇总函数只输出截距和 x,而不是因子的系数和标
如何抑制 SBT 的调试消息?它们被记录到标准输出,所以运行一个项目会产生这个: $ cat src/main/scala/Hello.scala object Hello { def main(
有没有办法抑制 Doxygen 对特定文件发出“未记录”警告?我的项目有几个自动生成的代码头,导致它抛出成百上千的错误,难以筛选。 最佳答案 如 documentation 中所述,有一个配置选项。
R的eHOF包中的HOF函数会自动生成进度条。函数中没有关闭进度条的参数。 有什么办法可以抑制函数外的进度条的生成? (我正在应用该功能数百次,目前进度条除了淹没我的屏幕外没有任何作用。) 最佳答案
随着所有 SDK 的出现,能够方便地针对多个 SDK 和平台进行构建。然而,从 3.2 跳到 3.0,甚至偶尔跳到 2.x,我经常收到涉及已更改或被取代的方法的弃用警告: warning: 'UIKe
我创建了一个 PowerShell 脚本,该脚本将为 Cisco Meraki 添加 VPN 连接。 脚本本身按预期运行,但如果发生错误,则会出现“已完成”弹出窗口,并在 PS 窗口中显示错误消息。
我是一名优秀的程序员,十分优秀!