|
|
Регистрация Восстановить пароль |
Повторная активизация e-mail |
Регистрация | Задать вопрос |
Заплачу за решение |
Новые сообщения |
Сообщения за день |
Расширенный поиск |
Правила |
Всё прочитано |
|
|
Опции темы | Поиск в этой теме |
11.08.2015, 17:29 | #1 |
Форумчанин
Регистрация: 01.06.2015
Сообщений: 497
|
Узнать количество аргументов, которые были переданы в функцию
Здравствуйте.
Есть функция с переменным числом аргументов: Код:
Заранее благодарен.
Если помог, буду очень благодарен за Ваш отзыв (весы в левой нижней части сообщения).
Последний раз редактировалось Krasiosoft; 11.08.2015 в 17:32. |
11.08.2015, 18:50 | #2 |
Белик Виталий :)
Старожил
Регистрация: 23.07.2007
Сообщений: 57,097
|
http://www.cplusplus.com/reference/c...end/?kw=va_end
Т.е. когда va_arg вернет NULL - значит все.
I'm learning to live...
|
11.08.2015, 18:54 | #3 |
Форумчанин
Регистрация: 01.06.2015
Сообщений: 497
|
Такое можно применить, если переменные, передаваемые в функцию, не могут быть нулем. А как быть, если они могут быть нулем?
Если помог, буду очень благодарен за Ваш отзыв (весы в левой нижней части сообщения).
|
11.08.2015, 19:00 | #4 |
Старожил
Регистрация: 13.07.2012
Сообщений: 6,331
|
Передать количество аргументов в качестве первого аргумента.
|
11.08.2015, 19:09 | #5 |
Форумчанин
Регистрация: 01.06.2015
Сообщений: 497
|
Понимаю, что можно самому передавать количество, но в данном случае было бы удобнее, чтоб это определялось автоматически.
Видел такое решение: Код:
Если помог, буду очень благодарен за Ваш отзыв (весы в левой нижней части сообщения).
|
11.08.2015, 19:14 | #6 |
Старожил
Регистрация: 13.07.2012
Сообщений: 6,331
|
Аргументы ... всегда в стеке.
Это решение ищет 0. Стандартного способа подсчитать количество аргументов нет. |
11.08.2015, 19:25 | #7 |
Форумчанин
Регистрация: 01.06.2015
Сообщений: 497
|
Это точно?
Во многих местах не рекомендовали брать указатель и самому проходиться по нему, а использовать именно va_start, va_arg, va_end. И если это так, тогда зачем вообще нужны va_start, va_arg, va_end? а, да... выходит это тоже самое, что и предложил Stilet
Если помог, буду очень благодарен за Ваш отзыв (весы в левой нижней части сообщения).
Последний раз редактировалось Krasiosoft; 11.08.2015 в 19:28. |
11.08.2015, 20:38 | #8 |
Старожил
Регистрация: 22.05.2007
Сообщений: 9,065
|
C++ и удобство - понятия несовместимые. Указатели - это что-то типа хака, который работает сегодня на этой платформе, где-то там в другом месте поломается, поэтому лучше пользовать va_start, va_arg, va_end и не загоняться по их реализации.
|
11.08.2015, 21:07 | #9 | |
Белик Виталий :)
Старожил
Регистрация: 23.07.2007
Сообщений: 57,097
|
Цитата:
I'm learning to live...
|
|
11.08.2015, 21:39 | #10 |
Форумчанин
Регистрация: 01.06.2015
Сообщений: 497
|
Наверно так и буду делать. Изначально думал, что функцией с переменным числом аргументов это будет проще сделать.
Если помог, буду очень благодарен за Ваш отзыв (весы в левой нижней части сообщения).
|
|
Похожие темы | ||||
Тема | Автор | Раздел | Ответов | Последнее сообщение |
Составить функцию, подсчитывающую количество слов списка, которые начинаются и оканчиваются одной и той же буквой | Dark Illusion | Паскаль, Turbo Pascal, PascalABC.NET | 0 | 18.03.2013 23:26 |
узнать количество значений которые вернул SimpleDataSet | Kreadlling | БД в Delphi | 1 | 13.04.2012 09:47 |
как прервать выполнение всех функций которые были запущены setTimeout | Arassir | JavaScript, Ajax | 1 | 20.10.2011 16:20 |
узнать количество слов, которые содержат букву "у". C++ | kop | Помощь студентам | 0 | 14.05.2011 09:12 |
как работать с компанентами, которые были созданы программно? | morgonXak | Компоненты Delphi | 6 | 20.12.2010 18:38 |