GCC-8 -Wstringop-уточнение Что такое хорошая практика?C++

Программы на C++. Форум разработчиков
Ответить
Anonymous
 GCC-8 -Wstringop-уточнение Что такое хорошая практика?

Сообщение Anonymous »

gcc 8 добавил -wstringop -druncation предупреждение. From https://gcc.gnu.org/bugzilla/show_bug.cgi?id=82944 :


The -Wstringop-truncation warning added in GCC 8.0 via r254630 for bug 81117 is specifically intended to highlight likely unintended uses of the strncpy function that Обрезайте завершающий nul charcter от исходной строки. Примером такого неправильного использования в запросе является следующее: < /p>
< /blockquote>

Код: Выделить всё

char buf[2];

void test (const char* str)
{
strncpy (buf, str, strlen (str));
}
< /code>

Я получаю одинаковое предупреждение с этим кодом. < /p>

strncpy(this->name, name, 32);

warning: 'char* strncpy(char*, const char*, size_t)' specified bound 32 equals destination size [-Wstringop-truncation`]
Учитывая, что это-> Имя -war name [32] и name -char* с длиной, потенциально больше 32. Я хотел бы скопировать имя в это-> name и сбросить его, если это больше, чем 32, size_t 32? Я в замешательстве. Это не обязательно для этого-> Имя на конечном NUL.

Подробнее здесь: https://stackoverflow.com/questions/501 ... d-practice
Ответить

Быстрый ответ

Изменение регистра текста: 
Смайлики
:) :( :oops: :roll: :wink: :muza: :clever: :sorry: :angel: :read: *x)
Ещё смайлики…
   
К этому ответу прикреплено по крайней мере одно вложение.

Если вы не хотите добавлять вложения, оставьте поля пустыми.

Максимально разрешённый размер вложения: 15 МБ.

Вернуться в «C++»