Собственно, сабж. Думаю многие из Вас сталкивались с подобной проблемой. Как сделать так, чтобы компилятор перестал принимать это за ошибку и позволял компилировать код. Ибо, имхо, бесит уже нереально.
Непомнящий Евгений
Mar 14 2013, 09:53
Код
#define USED(x) ((void)(x)) void test(int a, int b) { USED(a); USED(b); }
EnRyo
Mar 14 2013, 09:55
Я нашел решение поэлегантней:
Цитата
#pragma diag_suppress=Pe550
KSN
Mar 14 2013, 10:09
Какими способами/инструментами народ пользуется для поиска/удаления НЕ используемых переменных? Например, temp использовалась, затем в какой-то момент необходимость в ней отпала, удалили выражение, где идут вычисления, и инициализацию оставили (компилятор может в этом случает и не ругнуться)
Загляните в Настройки проекта -> С/С++Compiler -> Diagnostics и посмотрите все ли там правильно выставлено.
prottoss
Mar 14 2013, 12:06
Цитата(EnRyo @ Mar 14 2013, 15:55)
Я нашел решение поэлегантней:
Вот как раз предлагаемое Вам выше (void)val намного более элегантней. Потому как понимается многими компиляторами.
Сергей Борщ
Mar 14 2013, 12:51
QUOTE (prottoss @ Mar 14 2013, 14:06)
Вот как раз предлагаемое Вам выше (void)val намного более элегантней. Потому как понимается многими компиляторами.
Зависит от контекста. Если речь идет о параметре функции - то да, прототипы могут быть заданы свыше и менять их нельзя. А вот если это случай как в примере KSN, то такое решение прячет этот мертвый код напрочь и найти его можно будет только внимательным просматриванием исходников. В случае прагмы все проще - отключил ее и компилятор сам покажет непричесанные места в коде.
prottoss
Mar 14 2013, 12:57
А можно ведь скобочки поставить и компилятор опять освежит Вам память
Код
#define USED(x) x//((void)(x)) void test(int a, int b) { USED(a); USED(b); }
Для просмотра полной версии этой страницы, пожалуйста, пройдите по ссылке.