Предупреждения с новым компилятором g cc - PullRequest
0 голосов
/ 03 августа 2020

Я пытаюсь скомпилировать свой код с помощью g cc 8.

Я получаю следующие предупреждения: -

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

С g cc 5 я могу скомпилировать . Но с g cc 8 я столкнулся с этой проблемой. Не могли бы вы помочь, что здесь нужно сделать, чтобы исправить эту проблему, чтобы скомпилировать это на G CC 8.

1 Ответ

7 голосов
/ 03 августа 2020

Ожидается, что вы будете использовать, например, %.254s или, в вашем случае, %.221s/%.32s, чтобы явно указать, что вы собираетесь обрабатывать только первые 254 символа параметра в любом случае.

Это предупреждение Предполагается, что вы не получите неожиданно обрезанную строку на стороне вывода, а скорее усечете ввод значимым образом.

В качестве альтернативы вы должны проверить возвращаемое значение snprintf. Если отрицательное, значит, вывод был усечен.

GCC9 предупредит вас, если вы не усекали ввод (гарантируя, что никакое усечение вывода не могло произойти), и не выполнили обработку ошибок в случае обрезания вывода.

В вашем конкретном случае c это выглядит так, как будто вы строите путь (который бесполезен при усечении в любой форме), поэтому проверка возвращаемого значения snprintf - это то, что вам на самом деле следует сделать.

...