David A. Gray Ответов: 1

Почему включение проверок SDL преобразует предупреждение C4995 в ошибку C4995?


Сегодня, перед тем как перестроить библиотеку C++ и ее программу модульного тестирования, я решил включить проверку SDL в настройках проекта для модульных тестов. Проверки SDL были включены в проекте библиотеки, когда он был обновлен с Visual Studio 6 до Visual Studio 2013, и его списки компиляции вызывают дюжину или более предупреждений SDL, в основном вокруг _tsprintf, которые я, возможно, никогда не исправлю, потому что я не вижу их действительно сломанными.

У меня есть много других проектов, все с включенными проверками SDL, многие с неразрешенными предупреждениями вокруг _tprintf и другие устаревшие функции ЭЛТ. На сегодняшний день ни один из них не представляет проблемы.

Недавно я обнаружил и начал использовать #progrma deprecate чтобы отметить некоторые из моих собственных старых функций, чтобы напомнить мне, чтобы в конечном итоге заменить их их преемниками. До сегодняшнего дня эти устаревшие функции никогда не мешали мне компилировать и связывать библиотеку. Единственное, что я вижу, что может отличить этот проект от других,-это то, что его выход-это программа символьного режима, в то время как другие-это библиотеки динамических ссылок.

Есть дискуссия о переполнении стека это дало мне намек на то, что мне нужно двигаться. Однако, ИМО, предлагаемое решение напрашивается вопрос: почему это использование pragma warning помечено в качестве ошибка, в то время как каждый другой экземпляр является предупреждение?

Что я уже пробовал:

То, что я попробовал, и это сработало, - это устранить проверки SDL.

1 Ответов

Рейтинг:
7

Jochen Arndt

Видеть /sdl (включить дополнительные проверки безопасности)[^]:

Цитата:
Эти проверки включают дополнительные предупреждения, относящиеся к безопасности, в качестве ошибок

Цитата:
/sdl включает эти предупреждения как ошибки:
...
C4995

Ты получаешь то, что просил.


David A. Gray

Спасибо. Теперь мне нужно сделать кое-какую домашнюю работу относительно параметров жизненного цикла безопасности.