Форум программистов, компьютерный форум, киберфорум
С++ для начинающих
Войти
Регистрация
Восстановить пароль
Карта форума Темы раздела Блоги Сообщество Поиск Заказать работу  
 
 
Рейтинг 4.56/75: Рейтинг темы: голосов - 75, средняя оценка - 4.56
74 / 37 / 3
Регистрация: 23.09.2012
Сообщений: 408
1

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

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

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

Добавлено через 25 минут
вверх
0
Programming
Эксперт
94731 / 64177 / 26122
Регистрация: 12.04.2006
Сообщений: 116,782
14.12.2012, 16:26
Ответы с готовыми решениями:

Обмен ссылками - полезен или бесполезен?
Здравствуйте. Сайт "А" размещает в разделе "Партнеры" ссылку на сайт "Б". Сайт "Б" размещает...

Разгон оперативки бесполезен, а разгон процессора пустая трата электроэнергии
К такому выводу я пришел после самостоятельного изучения разгона Ryzen 5 1600 и оперативки. На...

Макрос: Написать макрос по сравнению двух таблиц для нахождения несоответствий...
знатоки, прошу помощи в еще одном деле: есть два листа, --в одном список: яблоко, груша, слива, ...

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

29
go
Эксперт С++
3646 / 1378 / 243
Регистрация: 16.04.2009
Сообщений: 4,526
14.12.2012, 16:29 2
Kgfq, для переменных, которые ни разу не использовались. Чтобы компилятор варнинги не слал о неиспользованной переменной.
1
Неэпический
17870 / 10635 / 2054
Регистрация: 27.09.2012
Сообщений: 26,736
Записей в блоге: 1
14.12.2012, 16:29 3
Например, сравните два кода:
C++
1
2
3
4
5
6
#define UNREFERENCED_PARAMETER(P)          (P)
int main(){
    int d;
    //UNREFERENCED_PARAMETER(d);
    return 0;
}
C++
1
2
3
4
5
6
#define UNREFERENCED_PARAMETER(P)          (P)
int main(){
    int d;
    UNREFERENCED_PARAMETER(d);
    return 0;
}
точнее посмотрите на список предупреждений при компиляции
0
go
Эксперт С++
3646 / 1378 / 243
Регистрация: 16.04.2009
Сообщений: 4,526
14.12.2012, 16:33 4
Цитата Сообщение от Croessmah Посмотреть сообщение
#define UNREFERENCED_PARAMETER(P) * * * * *(P)
Этот макрос уже определен в winnt.h
0
Неэпический
17870 / 10635 / 2054
Регистрация: 27.09.2012
Сообщений: 26,736
Записей в блоге: 1
14.12.2012, 16:35 5
Цитата Сообщение от go Посмотреть сообщение
Этот макрос уже определен в winnt.h
не хотелось ничего подключать.
0
74 / 37 / 3
Регистрация: 23.09.2012
Сообщений: 408
14.12.2012, 16:37  [ТС] 6
Но тогда опять же встает вопрос о смысле: если переменная ни разу не использовалась, значит она не нужна в коде => он правильно ставит варнинги
0
Неэпический
17870 / 10635 / 2054
Регистрация: 27.09.2012
Сообщений: 26,736
Записей в блоге: 1
14.12.2012, 16:40 7
Цитата Сообщение от Kgfq Посмотреть сообщение
он правильно ставит варнинги
Вот Вы ему и говорите, что не надо этого делать, так и должно быть, что мол я в курсе, что переменная не используется

Добавлено через 25 секунд
Цитата Сообщение от Kgfq Посмотреть сообщение
если переменная ни разу не использовалась, значит она не нужна в коде
весьма сомнительное мнение.
0
go
Эксперт С++
3646 / 1378 / 243
Регистрация: 16.04.2009
Сообщений: 4,526
14.12.2012, 16:40 8
Kgfq, не всегда. Есть функция
C++
1
2
3
4
int fun(int a, int b)
{
    return a + 1;
}
Здесь будут варнинги, а мы их не хотим. Отключать их не имеет смысла, нужно выкручиваться.
0
74 / 37 / 3
Регистрация: 23.09.2012
Сообщений: 408
14.12.2012, 16:41  [ТС] 9
Croessmah, я о конечном смысле спрашиваю:

есть переменная, она не используется => она не нужна
если "сказать, что она используется", то можно забыть о ней => будет лишний код
т.е. конечный смысл снова туманен. Тупо для тестинга?

Добавлено через 11 секунд
Цитата Сообщение от Croessmah Посмотреть сообщение
весьма сомнительное мнение
поясните
0
Неэпический
17870 / 10635 / 2054
Регистрация: 27.09.2012
Сообщений: 26,736
Записей в блоге: 1
14.12.2012, 16:43 10
Цитата Сообщение от Kgfq Посмотреть сообщение
поясните
Когда-нибудь использовали второй параметр в функции?
C++
1
WinMain(HINSTANCE hInstance,HINSTANCE hPrevInstance,LPTSTR lpCmdLine,int nCmdShow)
0
go
Эксперт С++
3646 / 1378 / 243
Регистрация: 16.04.2009
Сообщений: 4,526
14.12.2012, 16:43 11
Цитата Сообщение от Kgfq Посмотреть сообщение
то можно забыть о ней => будет лишний код
Компилятор не будет генерировать для него никакого кода
0
74 / 37 / 3
Регистрация: 23.09.2012
Сообщений: 408
14.12.2012, 16:44  [ТС] 12
go, ну так эта функция не должна иметь второй параметр, раз его не использует. Это же глупо добавлять в код то, что не нужно.

Добавлено через 27 секунд
go, если она используется, он не удалит ее из кода

Добавлено через 31 секунду
Croessmah, я эту функцию использовать только дня 3 назад начал, поэтому не скажу )
0
go
Эксперт С++
3646 / 1378 / 243
Регистрация: 16.04.2009
Сообщений: 4,526
14.12.2012, 16:46 13
Цитата Сообщение от Kgfq Посмотреть сообщение
go, если она используется, он не удалит ее из кода
Читайте внимательно.
Цитата Сообщение от Kgfq Посмотреть сообщение
Это же глупо добавлять в код то, что не нужно.
Бывает по-другому нельзя. Обычно так делают, когда необходимо написать функцию, которая должна отвечать определенной сигнатуре API.
0
74 / 37 / 3
Регистрация: 23.09.2012
Сообщений: 408
14.12.2012, 16:48  [ТС] 14
Цитата Сообщение от go Посмотреть сообщение
Читайте внимательно.
прочитал. смысл для меня остался тот же.


Цитата Сообщение от go Посмотреть сообщение
Бывает по-другому нельзя. Обычно так делают, когда необходимо написать функцию, которая должна отвечать определенной сигнатуре API.
в таком случае, зачем создавать целый макрос, если можно просто написать:
C++
1
2
int d;
d;
0
Неэпический
17870 / 10635 / 2054
Регистрация: 27.09.2012
Сообщений: 26,736
Записей в блоге: 1
14.12.2012, 16:48 15
Цитата Сообщение от Kgfq Посмотреть сообщение
если она используется, он не удалит ее из кода
Компилятор достаточно умная штука. Он может выбросить целые куски кода, если код не используется.

Цитата Сообщение от Kgfq Посмотреть сообщение
ну так эта функция не должна иметь второй параметр, раз его не использует. Это же глупо добавлять в код то, что не нужно.
А как же зарезервированные параметры?

Цитата Сообщение от Kgfq Посмотреть сообщение
я эту функцию использовать только дня 3 назад начал, поэтому не скажу )
И врядли будете использовать
0
go
Эксперт С++
3646 / 1378 / 243
Регистрация: 16.04.2009
Сообщений: 4,526
14.12.2012, 16:49 16
Цитата Сообщение от Kgfq Посмотреть сообщение
в таком случае, зачем создавать целый макрос, если можно просто написать:
Чтобы в коде можно было легко найти неиспользованные переменные.
0
74 / 37 / 3
Регистрация: 23.09.2012
Сообщений: 408
14.12.2012, 17:21  [ТС] 17
Цитата Сообщение от Croessmah Посмотреть сообщение
Компилятор достаточно умная штука. Он может выбросить целые куски кода, если код не используется.
Но он считает, что она используется, поэтому не выдает варнинги и, соответственно не выкинет ее
0
What a waste!
1608 / 1300 / 180
Регистрация: 21.04.2012
Сообщений: 2,729
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
74 / 37 / 3
Регистрация: 23.09.2012
Сообщений: 408
14.12.2012, 17:49  [ТС] 19
Цитата Сообщение от Croessmah Посмотреть сообщение
А как же зарезервированные параметры?
Зачем? Разве сразу не ясно, что потребуется?
0
Higher
1953 / 1219 / 120
Регистрация: 02.05.2010
Сообщений: 2,925
Записей в блоге: 2
14.12.2012, 17:55 20
Цитата Сообщение от Kgfq Посмотреть сообщение
Но он считает, что она используется, поэтому не выдает варнинги и, соответственно не выкинет ее
Выкинет. Компилятор намного более мощные шутки проворачивать умеет.
Но в макросе я тоже не вижу смысла, потому что можно просто закомментить имя переменной.
0
14.12.2012, 17:55
IT_Exp
Эксперт
87844 / 49110 / 22898
Регистрация: 17.06.2006
Сообщений: 92,604
14.12.2012, 17:55
Помогаю со студенческими работами здесь

Макрос хранимый в отдельном файле или макрос на обновление макросов
Уважаемые форумчане, подскажите советом. Есть у меня файл Excel с макросами, которые я поддерживаю...

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

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

Макрос делает копию листа и сохраняет в новую книгу, но макрос в новой не работает
Есть макрос в книге. Он копирует текущий лист, создает новую книгу и копирует в новую книгу лист. ...


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

Или воспользуйтесь поиском по форуму:
20
Ответ Создать тему
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2024, CyberForum.ru