реклама на сайте
подробности

 
 
 
Reply to this topicStart new topic
> Подавление error'а "variable was set but never used", подавление ворнинга, который иар почему-то считает грубой ошибкой
EnRyo
сообщение Mar 14 2013, 09:46
Сообщение #1





Группа: Участник
Сообщений: 10
Регистрация: 19-02-13
Пользователь №: 75 688



Собственно, сабж.
Думаю многие из Вас сталкивались с подобной проблемой.
Как сделать так, чтобы компилятор перестал принимать это за ошибку и позволял компилировать код.
Ибо, имхо, бесит уже нереально.
Go to the top of the page
 
+Quote Post
Непомнящий Евген...
сообщение Mar 14 2013, 09:53
Сообщение #2


Знающий
****

Группа: Свой
Сообщений: 771
Регистрация: 16-07-07
Из: Волгодонск
Пользователь №: 29 153



Код
#define USED(x) ((void)(x))
void test(int a, int b) {
  USED(a); USED(b);
}
Go to the top of the page
 
+Quote Post
EnRyo
сообщение Mar 14 2013, 09:55
Сообщение #3





Группа: Участник
Сообщений: 10
Регистрация: 19-02-13
Пользователь №: 75 688



Я нашел решение поэлегантней:

Цитата
#pragma diag_suppress=Pe550


cool.gif
Go to the top of the page
 
+Quote Post
KSN
сообщение Mar 14 2013, 10:09
Сообщение #4


Местный
***

Группа: Свой
Сообщений: 404
Регистрация: 3-12-04
Из: Новосибирск
Пользователь №: 1 304



Какими способами/инструментами народ пользуется для поиска/удаления НЕ используемых переменных? Например, temp использовалась, затем в какой-то момент необходимость в ней отпала, удалили выражение, где идут вычисления, и инициализацию оставили (компилятор может в этом случает и не ругнуться)
Код
unsigned char temp;
void f(void)
{
temp = 0;
.....
//temp = a*b;
}
Go to the top of the page
 
+Quote Post
shmur
сообщение Mar 14 2013, 10:14
Сообщение #5


Участник
*

Группа: Участник
Сообщений: 55
Регистрация: 28-11-11
Пользователь №: 68 553



Загляните в Настройки проекта -> С/С++Compiler -> Diagnostics и посмотрите все ли там правильно выставлено.
Go to the top of the page
 
+Quote Post
prottoss
сообщение Mar 14 2013, 12:06
Сообщение #6


Гуру
******

Группа: Свой
Сообщений: 2 720
Регистрация: 24-03-05
Пользователь №: 3 659



Цитата(EnRyo @ Mar 14 2013, 15:55) *
Я нашел решение поэлегантней:
cool.gif
Вот как раз предлагаемое Вам выше (void)val намного более элегантней. Потому как понимается многими компиляторами.


--------------------
Go to the top of the page
 
+Quote Post
Сергей Борщ
сообщение Mar 14 2013, 12:51
Сообщение #7


Гуру
******

Группа: Модераторы
Сообщений: 8 455
Регистрация: 15-05-06
Из: Рига, Латвия
Пользователь №: 17 095



QUOTE (prottoss @ Mar 14 2013, 14:06) *
Вот как раз предлагаемое Вам выше (void)val намного более элегантней. Потому как понимается многими компиляторами.
Зависит от контекста. Если речь идет о параметре функции - то да, прототипы могут быть заданы свыше и менять их нельзя. А вот если это случай как в примере KSN, то такое решение прячет этот мертвый код напрочь и найти его можно будет только внимательным просматриванием исходников. В случае прагмы все проще - отключил ее и компилятор сам покажет непричесанные места в коде.


--------------------
На любой вопрос даю любой ответ
"Write code that is guaranteed to work, not code that doesn’t seem to break" (C++ FAQ)
Go to the top of the page
 
+Quote Post
prottoss
сообщение Mar 14 2013, 12:57
Сообщение #8


Гуру
******

Группа: Свой
Сообщений: 2 720
Регистрация: 24-03-05
Пользователь №: 3 659



А можно ведь скобочки поставить и компилятор опять освежит Вам память
Код
#define USED(x) x//((void)(x))
void test(int a, int b) {
   USED(a); USED(b);
}


--------------------
Go to the top of the page
 
+Quote Post

Reply to this topicStart new topic
1 чел. читают эту тему (гостей: 1, скрытых пользователей: 0)
Пользователей: 0

 


RSS Текстовая версия Сейчас: 20th July 2025 - 19:31
Рейтинг@Mail.ru


Страница сгенерированна за 0.01422 секунд с 7
ELECTRONIX ©2004-2016