Слишком много здесь, чтобы добавить комментарий.
Я использую версию Visual C, но она никогда не жалуется на то, что возвращаемое значение из scanf
не используется. делает , чтобы жаловаться, что scanf
является небезопасным и устарело , когда это не так.
MS думает, что я должен бытьиспользование собственной «более безопасной» версии scanf_s
, которая даже сложнее в использовании, и IMO вовсе не безопаснее - потому что она не похожа на замену, но принимает другие аргументы, и поэтому легко допустить ошибки при ее использовании.
Одной из последующих проблем является то, что компилятор выдает предупреждение для при каждом использовании scanf
(и некоторых других функций), что скрывает другие предупреждения.Я имею дело с этим, как рекомендовано, добавив #define
перед первым включением заголовка библиотеки.
#define _CRT_SECURE_NO_WARNINGS
#include <stdio.h>
Есть и другие вопросы, о которых MS тоже предупреждает, и я на самом деле ставлю три #defines
в началекаждый файл:
#define _CRT_SECURE_NO_WARNINGS
#define _CRT_SECURE_NO_DEPRECATE
#define _CRT_NONSTDC_NO_DEPRECATE
#include <stdio.h>
А теперь соответствующие предупреждения легко увидеть.