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

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