Подавление предупреждения C4996: почему не работает? - PullRequest
4 голосов
/ 14 мая 2019

Контекст : Я играю с модулем подгонки сплайнов библиотеки Eigen.Подгонка работает достаточно хорошо, но я получаю некоторые предупреждения (в Visual Studio 2013).

Вопрос : Почему я могу отключить некоторые предупреждения, тогда как другие остаются, даже если они должны былибыл подавлен?

Больше контекста :
Я получаю предупреждение "хорошо себя ведущий"

warning C4714: function 'const Eigen::Matrix Eigen::DenseBase::eval(void) const' marked as __forceinline not inlined

После небольшого исследования я узнал, что это действительно происходит с использованием eigenкод.Поскольку я предпочитаю не выдавать предупреждения,

#pragma warning(disable : 4714) 

прекрасно работает для его подавления.

"Непослушное" предупреждение

warning C4996: 'std::_Partial_sum2': Function call with parameters that may be unsafe - this call relies on the caller to check that the passed values are correct. To disable this warning, use -D_SCL_SECURE_NO_WARNINGS. See documentation on how to use Visual C++ 'Checked Iterators'
, возникающее из функции ChordLengths собственной,Этот, однако, не позволяет подавлять себя с помощью
#pragma warning(disable : 4996)
(и я совершенно уверен, что нет проблем с интервалом или что-то вроде вышеупомянутого 4714 работает хорошо), также не работает
#define _SCL_SECURE_NO_WARNINGS
#define _CRT_SECURE_NO_WARNINGS

иличто-нибудь из этой темы или всех других подобных тем.


Почему это так? Могу ли я пропустить что-то очевидное?

Пока я «решил» проблему довольно уродливо: я переписал функцию ChordLengths в свой код, заменив проблемную строку

std::partial_sum(chord_lengths.data(), chord_lengths.data()+n,chord_lengths.data());

собственной версией.Мне не нравится этот подход, но он решает проблему.Тем не менее, я бы предпочел понять, почему ничего не пытался подавить предупреждение.

Бонус: как мне на самом деле подавить предупреждение?

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...