Добрый день.
Скачал себе Visual Studio 2017. Транслирую старый проект, а в нем есть директивы #pragma argsused. И мне Visual Studio 2017 на голубом глазу выдает сообщение:
warning C4068: неизвестная директива pragma
Вопросы:
Что это? Новая мода? Сколько лет производители компиляторов писали предупреждения, если параметр функции не используется и требовали явно указывать pragma argsused. И вдруг "неизвестная директива pragma".
Что же мне теперь весь код перелопачивать, вычеркивая pragma argsused?
А как другие трансляторы, GCC например? Тоже перестали понимать pragma argsused?
Спасибо.
Да, вам следует перелопатить весь код, удаляя #pragma argsused и вставляя надлежащие блоки для указания, что параметр функции не используется. При желании такой блок можно спрятать в макрос.
void foo(int value)
{
static_cast<void>(value); // not used
альтернативный вариант c использованием стандартного C++17 аттрибута maybe_unused
void foo([[maybe_unused]] int value)
Существенным моментом является то, что argsused всегда подавляет предупреждения сразу для всех аргументов, даже если часть из них не является потенциально неиспользуемыми.
Апостиль в Лос-Анджелесе без лишних нервов и бумажной волокиты
Основные этапы разработки сайта для стоматологической клиники
Продвижение своими сайтами как стратегия роста и независимости