如果返回值被忽略,如何发出警告?

2023-12-01

我想查看我的代码(C++)中忽略函数返回值的所有位置。我怎样才能做到这一点 - 使用 gcc 或静态代码分析工具?

错误代码示例:

int f(int z) {
    return z + (z*2) + z/3 + z*z + 23;
}


int main()
{
  int i = 7;
  f(i); ///// <<----- here I disregard the return value

  return 1;
}

请注意:

  • 即使函数及其使用位于不同的文件中,它也应该可以工作
  • free静态检查工具

你想要海湾合作委员会的warn_unused_result属性:

#define WARN_UNUSED __attribute__((warn_unused_result))

int WARN_UNUSED f(int z) {
    return z + (z*2) + z/3 + z*z + 23;
}

int main()
{
  int i = 7;
  f(i); ///// <<----- here i disregard the return value
  return 1;
}

尝试编译此代码会产生:

$ gcc test.c
test.c: In function `main':
test.c:16: warning: ignoring return value of `f', declared with
attribute warn_unused_result

您可以在中看到它的使用Linux内核;他们有个__must_check做同样事情的宏;看起来你需要 GCC 3.4 或更高版本才能工作。然后你会发现内核头文件中使用了该宏:

unsigned long __must_check copy_to_user(void __user *to,
                                        const void *from, unsigned long n);
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

如果返回值被忽略,如何发出警告? 的相关文章

  • ROWNUM 的 OracleType 是什么

    我试图参数化所有现有的 sql 但以下代码给了我一个问题 command CommandText String Format SELECT FROM 0 WHERE ROWNUM lt maxRecords command CommandT
  • 在 LINQ 查询中返回不带时间的日期

    我正在编写一个查询 我想计算按日期联系我们的呼叫中心的次数 看起来很简单 但由于联系日期字段是日期时间字段 我得到了时间 因此当我按联系日期 时间 分组时 每个联系日期实例的计数为 1 所以 我想只按日期分组 而不按时间分组 下面是我用来查
  • 属性对象什么时候创建?

    由于属性实际上只是附加到程序集的元数据 这是否意味着属性对象仅根据请求创建 例如当您调用 GetCustomAttributes 时 或者它们是在创建对象时创建的 或者 前两个的组合 在由于 CLR 的属性扫描而创建对象时创建 从 CLR
  • C++:无法使用scoped_allocator_adaptor传播polymorphic_allocator

    我有一个vector
  • C++ 求二维数组每一行的最大值

    我已经设法用这个找到我的二维数组的每一行的最小值 void findLowest int A Cm int n int m int min A 0 0 for int i 0 i lt n i for int j 0 j lt m j if
  • 如何在没有 Control.Invoke() 的情况下从后台线程修改控件属性

    最近 我们遇到了一些旧版 WinForms 应用程序 我们需要更新一些新功能 在专家测试该应用程序时 发现一些旧功能被破坏 无效的跨线程操作 现在 在您认为我是新手之前 我确实有一些 Windows 窗体应用程序的经验 我不是专家 但我认为
  • FFMPEG Seeking 带来音频伪影

    我正在使用 ffmpeg 实现音频解码器 在读取音频甚至搜索已经可以工作时 我无法找到一种在搜索后清除缓冲区的方法 因此当应用程序在搜索后立即开始读取音频时 我没有任何工件 avcodec flush buffers似乎对内部缓冲区没有任何
  • fgets() 和 Ctrl+D,三次才能结束?

    I don t understand why I need press Ctrl D for three times to send the EOF In addition if I press Enter then it only too
  • 为什么 POSIX 允许在只读模式下超出现有文件结尾 (fseek) 进行搜索

    为什么寻找文件结尾很有用 为什么 POSIX 让我们像示例中那样在以只读方式打开的文件中进行查找 c http en cppreference com w c io fseek http en cppreference com w c io
  • 在 ASP.Net Core 2.0 中导出到 Excel

    我曾经使用下面的代码在 ASP NET MVC 中将数据导出到 Excel Response AppendHeader content disposition attachment filename ExportedHtml xls Res
  • 编译的表达式树会泄漏吗?

    根据我的理解 JIT 代码在程序运行时永远不会从内存中释放 这是否意味着重复调用 Compile 表达式树上会泄漏内存吗 这意味着仅在静态构造函数中编译表达式树或以其他方式缓存它们 这可能不那么简单 正确的 他们可能是GCed Lambda
  • 使用 LINQ 查找列表中特定类型的第一个元素

    使用 LINQ 和 C 在元素列表中查找特定类型的第一个项目的最短表示法是什么 var first yourCollection OfType
  • 初始化变量的不同方式

    在 C 中初始化变量有多种方法 int z 3 与 int 相同z 3 Is int z z 3 same as int z z 3 您可以使用 int z z 3 Or just int z 3 Or int z 3 Or int z i
  • 网络参考共享类

    我用 Java 编写了一些 SOAP Web 服务 在 JBoss 5 1 上运行 其中两个共享一个类 AddressTO Web 服务在我的 ApplycationServer 上正确部署 一切都很顺利 直到我尝试在我的 C 客户端中使用
  • AccessViolationException 未处理

    我正在尝试使用史蒂夫 桑德森的博客文章 http blog stevensanderson com 2010 01 28 editing a variable length list aspnet mvc 2 style 为了在我的 ASP
  • 将日期参数传递给对 MVC 操作的 ajax 调用的安全方法

    我有一个 MVC 操作 它的参数之一是DateTime如果我通过 17 07 2012 它会抛出一个异常 指出参数为空但不能有空值 但如果我通过01 07 2012它被解析为Jan 07 2012 我将日期传递给 ajax 调用DD MM
  • ListDictionary 类是否有通用替代方案?

    我正在查看一些示例代码 其中他们使用了ListDictionary对象来存储少量数据 大约 5 10 个对象左右 但这个数字可能会随着时间的推移而改变 我使用此类的唯一问题是 与我所做的其他所有事情不同 它不是通用的 这意味着 如果我在这里
  • GDK3/GTK3窗口更新的精确定时

    我有一个使用 GTK 用 C 语言编写的应用程序 尽管该语言对于这个问题可能并不重要 这个应用程序有全屏gtk window与单个gtk drawing area 对于绘图区域 我已经通过注册了一个刻度回调gtk widget add ti
  • 更改显示的 DPI 缩放大小使 Qt 应用程序的字体大小渲染得更大

    我使用 Qt 创建了一些 GUI 应用程序 我的 GUI 应用程序包含按钮和单选按钮等控件 当我运行应用程序时 按钮内的按钮和字体看起来正常 当我将显示器的 DPI 缩放大小从 100 更改为 150 或 200 时 无论分辨率如何 控件的
  • 如何将字符串“07:35”(HH:MM) 转换为 TimeSpan

    我想知道是否有办法将 24 小时时间格式的字符串转换为 TimeSpan 现在我有一种 旧时尚风格 string stringTime 07 35 string values stringTime Split TimeSpan ts new

随机推荐

  • awk 根据列合并行

    想要根据第一列合并行 1到行并格式化输出 打印时需要生成headerMax Unique count of first field 例如 安哥拉显示 count 3 巴西显示 count 5 赞比亚显示 count 1 字段 1 的最大唯一
  • NginX 友好的 PHP 框架

    我正在寻找一种 PHP 框架 如果幸运的话 它只能在 FastCGI 下的 nginx 中工作 否则 不需要太多调整 Symfony 1 4 与 nginx 非常棒 我已经完成了调整 这是我的生产配置的概括 我可以保证它适合生产使用 ser
  • 删除因子级别的“空单元格”

    我有一个数据框 其中有一列 列中有一些数据和一些空单元格 当我检查该列的级别时 它显示三个级别 因为它将空单元格作为一个级别 我想删除那个级别 假设我有 editor note starting from R 4 0 0 stringsAs
  • HTML输入24位格式的时间

    我正在使用下面的 HTML 标签
  • 黑莓条码扫描库?

    有人很好地掌握了条形码扫描库 可以根据数码相机的输入读取 UPC A EAN 13 或其他主要条形码格式吗 RIM 是否有可用于此的标准库 我知道 BlackBerry Messenger 内置了 2D 条码扫描功能 所以我猜测一定有可用的
  • 将上下文菜单添加到 Inno Setup 页面

    如何将一些上下文菜单添加到 Inno Setup 的特定页面 例如 在安装页面中 如果用户右键单击页面 他可以看到 取消 或 暂停 菜单项 可以执行一些操作 Inno Setup 没有上下文菜单 API 甚至没有用于处理鼠标点击的 API
  • Golang 多部分文件表单请求

    我正在针对 Mapbox 编写一个 API 客户端 将一批 svg 图像上传到自定义地图 他们为此提供的 api 记录了一个运行良好的 cUrl 调用示例 curl F images include mapbox sprites dark
  • 如何在 VS Express 2010 中进行发布构建?

    或者我应该复制 bin Release 中除 pdb 之外的所有文件 UPD UPD 2 这就是我在 构建 选项卡的 高级 设置中找到的内容 这是我要找的吗 要在 VS 2010 Express 中进行发布构建 您需要将项目的构建配置从 调
  • 使用数组 Javascript 制作幻灯片

    我的目标是制作幻灯片 我这里只有 1 张图片 打算稍后使用更多
  • 如何在 JS 中使用 Regexp 使 \ 成为文字反斜杠

    我对正则表达式很陌生 似乎 用于元字符 我的问题是我想精确搜索这个字符串 mediaType img 现在我还想动态地为 img 添加一个变量 所以我希望它是这样的 new RegExp mediaType variable 我该如何编写才
  • 车把模板带有“div”标签而不是“script”

    其实问题就在主题里 是否可以制作车把模板框架 以识别 div 标签中的模板而不是 script 标签中的模板 例如 我想使用此标记创建模板 div class text x handlebars template h2 I m templa
  • 如何发送POST和GET请求?

    我想发送我的JSON到一个 URL POST and GET NSMutableDictionary JSONDict NSMutableDictionary alloc init JSONDict setValue myValue for
  • 无法在更新面板之外更新标签

    我花了很多时间研究如何在更新面板之外更新标签 终于找到了一些东西 但它不更新标签 如果我们刷新页面就可以正常工作了 请让我知道代码中的错误或任何新的方法 请在下面找到我的代码 我认为需要为脚本管理器或 dataItem 添加更多代码 谢谢各
  • C 中的 Python 实例方法

    考虑以下 Python 3 x 代码 class Foo object def bar self pass foo Foo 如何用C语言编写相同的功能 我的意思是 如何使用 C 中的方法创建对象 然后从中创建一个实例 Edit 哦对不起 我
  • Web服务客户端,我应该保留服务还是端口实例?

    我正在开发网络服务客户端cxf codegen plugin它正在生成类MyService extends Service对于客户端部分 我现在的问题是 当我创建客户端时 我应该MyService每次我想发送请求或保留它并每次创建端口时都创
  • Java中的字符串数组初始化[重复]

    这个问题在这里已经有答案了 如果我声明一个String array String names new String 3 那么为什么我们不能像这样给上面声明的数组赋值 names Ankit Bohra Xyz 申报时您可以进行以下操作 St
  • Delphi XE6 - 使用“USE_INDY”构建的 SOAP 通过代理问题连接到 Web 服务

    我有一个使用连接到网络服务的应用程序THttpRio成分 Web服务有基本的身份验证 我使用 USE INDY 指令编译了 Delphi SOAP 单元 以便 THttpRio 组件使用 WinHttp 现在我需要通过代理访问我的网络服务
  • 尝试使用 Swift AVPlayer 播放音频

    这是我当前的视图控制器 import UIKit import AVFoundation class SecondViewController UIViewController override func viewDidLoad var p
  • 重叠的 AWT 线和 Swing JLabels

    我在使用线基元的应用程序中遇到问题JLables 我尝试解释一下 我必须使用线条来代表道路来绘制车辆路线JLabels来代表城市 我需要使用JLabels因为每个 JLabel 都有一个监听器 用于显示包含城市信息的对话框 我重新定义pai
  • 如果返回值被忽略,如何发出警告?

    我想查看我的代码 C 中忽略函数返回值的所有位置 我怎样才能做到这一点 使用 gcc 或静态代码分析工具 错误代码示例 int f int z return z z 2 z 3 z z 23 int main int i 7 f i lt