首页 > 解决方案 > 新 gcc 编译器的警告

问题描述

我正在尝试使用 gcc 8 编译我的代码。

我面临以下警告:-

warning:  [-Wformat-truncation=]
120 |         snprintf( test, sizeof test, "%s", testpath);

使用 gcc 5 我可以编译。但是对于 gcc 8,我正面临这个问题。请您帮忙解决这个问题,以便在 GCC 8 上编译它。

标签: cgcc

解决方案


您应该使用 eg%.254s或在您的情况下%.221s/%.32s明确指定您在任何情况下都只处理参数的前 254 个字符。

该警告应该确保您不会在输出端出现意外截断的字符串,而是以有意义的方式截断输入。

或者,您应该检查snprintf. 如果为负,则输出被截断。

当您既没有截断输入(保证不会发生输出截断),也没有执行错误处理以防输出被截断时,GCC9 会警告您。


在您的特定情况下,看起来好像您正在构建一条路径(以任何形式截断时都是无用的),因此验证的返回值snprintf是您实际应该做的。


推荐阅读