Отключить предупреждающие сообщения в GCC через заголовочные файлы?

при установке шпаклевки на win32, Вы добираетесь, pscp (шпаклюйте scp).

, таким образом, можно использовать взлом os.system на win32 также.

(и можно использовать агент шпаклевки для ключа-managment)

<час>

жаль это - только взлом (но можно обернуть его в класс Python)

6
задан taskinoor 29 April 2016 в 13:59
поделиться

6 ответов

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

#define BUFFER_SIZE 100
char buff[BUFFER_SIZE];
gets( buff);   // unsafe!
fgets( buff, sizeof(buff), stdin );   // safe
27
ответ дан 8 December 2019 в 02:00
поделиться

Используйте fgets () вместо gets ()

char buffer[BUFSIZ];
/* gets(buffer); */
fgets(buffer,sizeof(buffer), stdin);

Функция gets () не проверяет длину буфера и может выполнять запись после конца и изменять стек. Вы слышите об этом "переполнении буфера".

8
ответ дан 8 December 2019 в 02:00
поделиться

Я бы прислушался к предупреждению и заменил получает . Для меня это достаточно ясно:

ОШИБКИ

Никогда не используйте gets (). Потому что невозможно сказать, не зная данных в заранее, сколько символов будет читать get (), и поскольку gets () будет продолжать хранить символов за пределами буфера, использовать это крайне опасно. Она имеет использовались для взлома компьютерной безопасности. Вместо этого используйте fgets ().

9
ответ дан 8 December 2019 в 02:00
поделиться

На самом деле нет веской причины использовать gets () . Даже стандарт C говорит, что он устарел! Вместо этого используйте fgets () .

[Edit]

Похоже, предупреждение исходит от компоновщика. Вы получаете предупреждение при компиляции с помощью -c ? (Что отключает связывание.)

6
ответ дан 8 December 2019 в 02:00
поделиться

Регистры GAC ( Global Assembly Cache ) ваши .dll, поэтому вам не нужно иметь их в рабочем каталоге вашего приложения. Все библиотеки .dll .NET (System.IO.dll, System.dll и т. Д.) Регистрируются через GAC, что означает, что вам не обязательно иметь их в каталоге вашего приложения. По умолчанию, если .dll не зарегистрирована в GAC, программа будет искать отсутствующую .dll в своем собственном каталоге.

Итак, у вас есть три варианта:

  1. Добавить ссылочную .dll ' Но, похоже, это не работает для получения предупреждений ... Я пробовал на своем компьютере.

24
ответ дан 8 December 2019 в 02:00
поделиться

Вам вообще не следует использовать функцию gets , на странице руководства рекомендуется использовать вместо нее fgets .

GCC не предоставляет эту функциональность что GCC делает для отключения предупреждений с помощью прагм. Вместо этого вы должны использовать различные параметры предупреждений в качестве флагов для компилятора.

5
ответ дан 8 December 2019 в 02:00
поделиться
Другие вопросы по тегам:

Похожие вопросы: