С Новым годом! Форум программистов, компьютерный форум, киберфорум
Наши страницы

С++ для начинающих

Войти
Регистрация
Восстановить пароль
 
 
Рейтинг: Рейтинг темы: голосов - 38, средняя оценка - 4.63
Kgfq
74 / 37 / 2
Регистрация: 23.09.2012
Сообщений: 408
#1

Макрос UNREFERENCED_PARAMETER бесполезен? - C++

14.12.2012, 16:26. Просмотров 5555. Ответов 29
Метки нет (Все метки)

C++
1
#define UNREFERENCED_PARAMETER(P)          (P)
Зачем нужны подобные макросы? Это же бессмысленно

Добавлено через 25 минут
вверх
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
14.12.2012, 16:26
Здравствуйте! Я подобрал для вас темы с ответами на вопрос Макрос UNREFERENCED_PARAMETER бесполезен? (C++):

Если макрос на VBA переписать на С++, то макрос станет работать быстрее? - C++
Всем привет!) У меня есть макрос написанный в Екселе на VBA, если его переписать на С++ , то макрос станет работать быстрее? ...

Макрос вставки файлов в листы-Необходимо изменить ниже приведённый макрос - VBA
Необходимо изменить ниже приведённый макрос, взятый с форума. Необходима помощь. Буду признателен. Автору макроса особое спасибо. ...

Макрос: из PowerPoint развернуть Exel и вызвать уже в нём макрос - VBA
Собственно сабж. Работая в презентации PowerPoint нужно по клику на кнопку с прикреплённым макросом развернуть уже открытый документ Exel и...

Макрос, чтобы другой макрос распихал сам по N файлам - VBA
Может эта тема уже тут звучала, да поиск не помог... Просто проблема в том, что макрос постоянно модернизируется в все файлы вручную потом...

Макрос, запускающий макрос из другого закрытого файла - VBA
Здравствуйте. Использую Office 2007. Поискал на форуме, не нашел ответа. Опишу подробно проблему. Есть книга1, которая лежит в...

Сделать макрос в Word, вводишь строку и макрос произвольно меняет шрифт, цвет и размер для каждого слова из этого активного вордовского документа. - VBA
Началось VBA - лекций нет, только практика. Препод категоричеки отказывается что-нить объяснять, ссылаясь на то, что: "если сам найдешь...

29
go
Эксперт С++
3586 / 1366 / 128
Регистрация: 16.04.2009
Сообщений: 4,528
14.12.2012, 16:49 #16
Цитата Сообщение от Kgfq Посмотреть сообщение
в таком случае, зачем создавать целый макрос, если можно просто написать:
Чтобы в коде можно было легко найти неиспользованные переменные.
0
Kgfq
74 / 37 / 2
Регистрация: 23.09.2012
Сообщений: 408
14.12.2012, 17:21  [ТС] #17
Цитата Сообщение от Croessmah Посмотреть сообщение
Компилятор достаточно умная штука. Он может выбросить целые куски кода, если код не используется.
Но он считает, что она используется, поэтому не выдает варнинги и, соответственно не выкинет ее
0
gray_fox
What a waste!
1522 / 1227 / 70
Регистрация: 21.04.2012
Сообщений: 2,565
Завершенные тесты: 3
14.12.2012, 17:25 #18
Цитата Сообщение от go Посмотреть сообщение
Kgfq, не всегда. Есть функция
C++
1
2
3
4
int fun(int a, int b)
{
 return a + 1;
}
Здесь будут варнинги, а мы их не хотим. Отключать их не имеет смысла, нужно выкручиваться.
Здесь можно просто имя параметра опустить, макрос не нужен.
C++
1
2
3
4
int fun(int a, int)
{
 return a + 1;
}
0
Kgfq
74 / 37 / 2
Регистрация: 23.09.2012
Сообщений: 408
14.12.2012, 17:49  [ТС] #19
Цитата Сообщение от Croessmah Посмотреть сообщение
А как же зарезервированные параметры?
Зачем? Разве сразу не ясно, что потребуется?
0
diagon
Higher
1932 / 1198 / 49
Регистрация: 02.05.2010
Сообщений: 2,925
Записей в блоге: 2
14.12.2012, 17:55 #20
Цитата Сообщение от Kgfq Посмотреть сообщение
Но он считает, что она используется, поэтому не выдает варнинги и, соответственно не выкинет ее
Выкинет. Компилятор намного более мощные шутки проворачивать умеет.
Но в макросе я тоже не вижу смысла, потому что можно просто закомментить имя переменной.
0
go
Эксперт С++
3586 / 1366 / 128
Регистрация: 16.04.2009
Сообщений: 4,528
14.12.2012, 19:41 #21
Цитата Сообщение от gray_fox Посмотреть сообщение
Здесь можно просто имя параметра опустить, макрос не нужен.
Ок. Возможно. В данном случаи зависит от стиля программиста. Но вот тот случай, где Не выкрутишься
C++
1
2
3
4
5
6
7
8
9
10
11
int fun(int a, int b)
{
    _ASSERT(b == 0); 
/*
* Мы знаем, что второй параметр всегда ноль, но так как мы не можем рисковать, то              
* как опытный программист ставим здесь ASSERT(так сделают многие). 
* И вот прогнав по всем тестам нашу программу мы со спокойной душой компилим release-версию 
* и получаем варнинги.
*/
    return a + 1;
}
Добавлено через 1 минуту
diagon, а теперь?
Цитата Сообщение от go Посмотреть сообщение
Чтобы в коде можно было легко найти неиспользованные переменные.
0
diagon
Higher
1932 / 1198 / 49
Регистрация: 02.05.2010
Сообщений: 2,925
Записей в блоге: 2
14.12.2012, 19:49 #22
Цитата Сообщение от go Посмотреть сообщение
Чтобы в коде можно было легко найти неиспользованные переменные.
Разве что если делать поиск по этому макросу(что маловероятно, ведь зачем искать такие переменные, если они не используются). В обычном просматривании кода коммент в заголовке из-за подсвечивания сразу же бросается в глаза.
0
go
Эксперт С++
3586 / 1366 / 128
Регистрация: 16.04.2009
Сообщений: 4,528
14.12.2012, 19:56 #23
Цитата Сообщение от diagon Посмотреть сообщение
Разве что если делать поиск по этому макросу(что маловероятно, ведь зачем искать такие переменные, если они не используются)
Да, да, все так. Но разные ситуации бывают, лично мне не приходилось. Ну например закоментили вы часть кода, вам варнинг пришел. Написали макрос. Все ок. Потом раскоментили ту часть кода, когда он опять нужен и все ок. (А если бы закоментили объявление переменной(при этом попотев и найдя это объявление, нужно было снова искать что расскоментить, а чтобы найти вникнуть в весь код). Логично?
0
diagon
Higher
1932 / 1198 / 49
Регистрация: 02.05.2010
Сообщений: 2,925
Записей в блоге: 2
14.12.2012, 20:10 #24
Цитата Сообщение от go Посмотреть сообщение
нужно было снова искать что расскоментить
А что там искать? В заголовке функции, тело которой вы пишите.
Цитата Сообщение от go Посмотреть сообщение
вам варнинг пришел
пока функция не финальна, то лучше просто забить на ворнинги.
Цитата Сообщение от go Посмотреть сообщение
Написали макрос. Все ок.
Макрос по определению не ок. Особенно с учетом того, что он находится в каком-то виндовом хедере.
0
go
Эксперт С++
3586 / 1366 / 128
Регистрация: 16.04.2009
Сообщений: 4,528
14.12.2012, 20:13 #25
Цитата Сообщение от diagon Посмотреть сообщение
Макрос по определению не ок. Особенно с учетом того, что он находится в каком-то виндовом хедере.
Вы тоже считаете, что компилятор его не выпилит?
Давайте сойдемся на том, что это такой стиль.
0
Toshkarik
1147 / 864 / 51
Регистрация: 03.08.2011
Сообщений: 2,404
Завершенные тесты: 1
14.12.2012, 20:43 #26
Данная техника используется, например, в наследовании. В том же wxWidgets. Там для обработки событий нужно переопределять виртуальную функцию, которая получает в качестве параметра объект класса "событие". Но очень часто бывает, что в обработчике обращаться к этим объектом просто нет необходимости.
0
gray_fox
What a waste!
1522 / 1227 / 70
Регистрация: 21.04.2012
Сообщений: 2,565
Завершенные тесты: 3
14.12.2012, 22:45 #27
Цитата Сообщение от go Посмотреть сообщение
Но вот тот случай, где Не выкрутишься
Ну хз, если честно, никогда подобных ситуаций не возникало (Когда параметр не используется, но в то же время по нему надо проверить некий инвариант).
0
diagon
Higher
1932 / 1198 / 49
Регистрация: 02.05.2010
Сообщений: 2,925
Записей в блоге: 2
14.12.2012, 23:10 #28
Вспомнился пример отсюда. (См. начало второго листинга).
Но, разумеется, там используется не макрос а более кошерный вариант.
0
Jupiter
Каратель
Эксперт С++
6561 / 3982 / 227
Регистрация: 26.03.2010
Сообщений: 9,273
Записей в блоге: 1
Завершенные тесты: 2
15.12.2012, 00:41 #29
Цитата Сообщение от diagon Посмотреть сообщение
Вспомнился пример отсюда. (См. начало второго листинга).
вспомнился пример отсюда(см. 2-й метод в файле)

Не по теме:

давайте сюда ещё примеров накидаем, напишем кто чем пользовался и т.д., а то всего 3 страницы темы как-то маловато

Кликните здесь для просмотра всего текста
а чё?

0
Croessmah
Ушел
Эксперт CЭксперт С++
13558 / 7708 / 872
Регистрация: 27.09.2012
Сообщений: 18,996
Записей в блоге: 3
Завершенные тесты: 1
15.12.2012, 18:06 #30
Цитата Сообщение от Kgfq Посмотреть сообщение
Зачем? Разве сразу не ясно, что потребуется?
А разве ясно?
0
15.12.2012, 18:06
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
15.12.2012, 18:06
Привет! Вот еще темы с ответами:

Определите макрос SQR с формальными параметрами для вычисления x2, макрос-константу SIZE для задания размера массива и протестируйте работу макроса - C (СИ)
Определите макрос SQR с формальными параметрами для вычисления x2, макрос-константу SIZE для задания размера массива и протестируйте работу...

Макрос [FASM] - как обратиться к макросу и как передать параметр в макрос - Assembler
Задачка тривиальная, но как обратиться к макросу и как передать параметр в макрос, ибо ругаецо? Само тело программы, по видимому,...

Макрос, копирующий макрос - VBA
Люди, здравствуйте. Есть такая необходимость: создавать книгу, а потом копировать туда модуль с кодом макроса. Как это сделать?...

Макрос - C++
Как в макросе интовское число разделить на число с запятой?


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
30
Ответ Создать тему
Опции темы

КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2017, vBulletin Solutions, Inc.