新的gcc编译器警告

时间:2020-08-03 06:47:04

标签: c gcc

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

我正面临以下警告:-

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

使用gcc 5,我可以编译。但是在gcc 8中,我遇到了这个问题。请您帮忙解决此问题,以便在GCC 8上进行编译。

1 个答案:

答案 0 :(得分:7)

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

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

或者,您应该检查snprintf的返回值。如果为负,则输出将被截断。

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


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