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

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

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

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

14.12.2012, 16:26. Просмотров 5552. Ответов 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:29 #2
Kgfq, для переменных, которые ни разу не использовались. Чтобы компилятор варнинги не слал о неиспользованной переменной.
1
Croessmah
Ушел
Эксперт CЭксперт С++
13558 / 7708 / 872
Регистрация: 27.09.2012
Сообщений: 18,996
Записей в блоге: 3
Завершенные тесты: 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
Эксперт С++
3586 / 1366 / 128
Регистрация: 16.04.2009
Сообщений: 4,528
14.12.2012, 16:33 #4
Цитата Сообщение от Croessmah Посмотреть сообщение
#define UNREFERENCED_PARAMETER(P) * * * * *(P)
Этот макрос уже определен в winnt.h
0
Croessmah
Ушел
Эксперт CЭксперт С++
13558 / 7708 / 872
Регистрация: 27.09.2012
Сообщений: 18,996
Записей в блоге: 3
Завершенные тесты: 1
14.12.2012, 16:35 #5
Цитата Сообщение от go Посмотреть сообщение
Этот макрос уже определен в winnt.h
не хотелось ничего подключать.
0
Kgfq
74 / 37 / 2
Регистрация: 23.09.2012
Сообщений: 408
14.12.2012, 16:37  [ТС] #6
Но тогда опять же встает вопрос о смысле: если переменная ни разу не использовалась, значит она не нужна в коде => он правильно ставит варнинги
0
Croessmah
Ушел
Эксперт CЭксперт С++
13558 / 7708 / 872
Регистрация: 27.09.2012
Сообщений: 18,996
Записей в блоге: 3
Завершенные тесты: 1
14.12.2012, 16:40 #7
Цитата Сообщение от Kgfq Посмотреть сообщение
он правильно ставит варнинги
Вот Вы ему и говорите, что не надо этого делать, так и должно быть, что мол я в курсе, что переменная не используется

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

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

Добавлено через 11 секунд
Цитата Сообщение от Croessmah Посмотреть сообщение
весьма сомнительное мнение
поясните
0
Croessmah
Ушел
Эксперт CЭксперт С++
13558 / 7708 / 872
Регистрация: 27.09.2012
Сообщений: 18,996
Записей в блоге: 3
Завершенные тесты: 1
14.12.2012, 16:43 #10
Цитата Сообщение от Kgfq Посмотреть сообщение
поясните
Когда-нибудь использовали второй параметр в функции?
C++
1
WinMain(HINSTANCE hInstance,HINSTANCE hPrevInstance,LPTSTR lpCmdLine,int nCmdShow)
0
go
Эксперт С++
3586 / 1366 / 128
Регистрация: 16.04.2009
Сообщений: 4,528
14.12.2012, 16:43 #11
Цитата Сообщение от Kgfq Посмотреть сообщение
то можно забыть о ней => будет лишний код
Компилятор не будет генерировать для него никакого кода
0
Kgfq
74 / 37 / 2
Регистрация: 23.09.2012
Сообщений: 408
14.12.2012, 16:44  [ТС] #12
go, ну так эта функция не должна иметь второй параметр, раз его не использует. Это же глупо добавлять в код то, что не нужно.

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

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


Цитата Сообщение от go Посмотреть сообщение
Бывает по-другому нельзя. Обычно так делают, когда необходимо написать функцию, которая должна отвечать определенной сигнатуре API.
в таком случае, зачем создавать целый макрос, если можно просто написать:
C++
1
2
int d;
d;
0
Croessmah
Ушел
Эксперт CЭксперт С++
13558 / 7708 / 872
Регистрация: 27.09.2012
Сообщений: 18,996
Записей в блоге: 3
Завершенные тесты: 1
14.12.2012, 16:48 #15
Цитата Сообщение от Kgfq Посмотреть сообщение
если она используется, он не удалит ее из кода
Компилятор достаточно умная штука. Он может выбросить целые куски кода, если код не используется.

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

Цитата Сообщение от Kgfq Посмотреть сообщение
я эту функцию использовать только дня 3 назад начал, поэтому не скажу )
И врядли будете использовать
0
14.12.2012, 16:48
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
14.12.2012, 16:48
Привет! Вот еще темы с ответами:

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

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

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

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


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

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

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