c - 新 gcc 编译器的警告
问题描述
我正在尝试使用 gcc 8 编译我的代码。
我面临以下警告:-
warning: [-Wformat-truncation=]
120 | snprintf( test, sizeof test, "%s", testpath);
使用 gcc 5 我可以编译。但是对于 gcc 8,我正面临这个问题。请您帮忙解决这个问题,以便在 GCC 8 上编译它。
解决方案
您应该使用 eg%.254s
或在您的情况下%.221s/%.32s
明确指定您在任何情况下都只处理参数的前 254 个字符。
该警告应该确保您不会在输出端出现意外截断的字符串,而是以有意义的方式截断输入。
或者,您应该检查snprintf
. 如果为负,则输出被截断。
当您既没有截断输入(保证不会发生输出截断),也没有执行错误处理以防输出被截断时,GCC9 会警告您。
在您的特定情况下,看起来好像您正在构建一条路径(以任何形式截断时都是无用的),因此验证的返回值snprintf
是您实际应该做的。
推荐阅读
- python-3.x - 元类哈希、__eq__ 和 isinstance
- xcode - Firebase Crashlytics:缺少 dsym 文件
- google-api - 如何使用服务帐户访问 Google Doc Api?
- odata - Odata 共享点休息 api 过滤器
- javascript - 如果用户已经存在于数据库中,我想通过 php get 方法发送错误消息,然后在没有 GET 变量的情况下重置 url
- python - 这些方法在models.py中基本上是做什么的
- ios - 错误:在此上下文中,“事务”对于类型查找不明确
- python - 如何在 Python 中将表达式字符串拆分为列表?
- python - Loc Pandas DataFrames 上的日期范围
- sql - 编写存储过程的推荐方法是什么?