[[устарело]] приводит к ошибке вместо предупреждения в Visual Studio - PullRequest
1 голос
/ 04 октября 2019

Согласно cppreference [[deprecated("message string")]] мы должны иметь возможность использовать символ, но вместо этого в VS получается ошибка.

Например, я не хочу выдавать предупреждение для методов ANSIв сборках UNICODE и наоборот:

#ifdef UNICODE
[[deprecated("This method does not work well in UNICODE builds")]]
#endif // UNICODE
    void f() {}

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

Как решить эту проблему ?,кстати. Мой проект настроен на максимальное соответствие стандарту.

Какова причина, по которой VS идет вразрез со стандартом, есть ли лучший способ выдать предупреждение для вышеуказанного случая?

1 Ответ

1 голос
/ 04 октября 2019

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

Нет другого способа предупреждения об использовании функции, кроме атрибута устаревания в стандартном C ++, по крайней мере, я знаюof.

Msvc имеет другие альтернативы, такие как #pragma deprecated(f), но они не лучше.

Как решить эту проблему?

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

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