Мат в 32 хода
237 / 172 / 18
Регистрация: 10.09.2009
Сообщений: 1,096
|
|
1 | |
Функции с переменным числом аргументов10.08.2010, 11:19. Показов 18913. Ответов 24
Метки нет Все метки)
(
0
|
|
10.08.2010, 11:19 | |
Ответы с готовыми решениями:
24
Функции с переменным числом аргументов
Шаблон с переменным числом аргументов, и возвращаемое значение функции
|
Мат в 32 хода
237 / 172 / 18
Регистрация: 10.09.2009
Сообщений: 1,096
|
|
10.08.2010, 12:18 [ТС] | 3 |
0
|
![]() ![]() 8378 / 3600 / 419
Регистрация: 03.07.2009
Сообщений: 10,708
|
|
10.08.2010, 14:19 | 4 |
nikkka, если данные однотипные, то можно передавать указатель на массив
0
|
![]() ![]() |
|
10.08.2010, 14:53 | 5 |
Только это правильно называется с "переменным числом аргументов". Есть ещё и научное название - "эллипс" (ellipsis). Слэнговое название "три точки" (threedot)
Пример есть тут. Но он несколько корявый, в том плане, что все аргументы одного и того же типа http://www.cplusplus.com/refer... rg/va_arg/ Модешь по форуму поискать с ключевым словом "va_arg"
0
|
![]() 1672 / 1044 / 174
Регистрация: 27.09.2009
Сообщений: 1,945
|
|
10.08.2010, 22:02 | 6 |
1
|
Мат в 32 хода
237 / 172 / 18
Регистрация: 10.09.2009
Сообщений: 1,096
|
|
10.08.2010, 22:13 [ТС] | 7 |
то есть ""элипсис""?
0
|
155 / 102 / 12
Регистрация: 22.07.2010
Сообщений: 443
|
|
11.08.2010, 18:11 | 9 |
В книге(справочнике) "Язык программирования C"(авторы Харбисон и Стил) было про это написано если найду напишу...
Добавлено через 1 час 14 минут Нашёл в разделе "Стандертные дополнения языка"!!! Но переписывать 3 страници неохото ![]()
1
|
В астрале
![]() 8048 / 4805 / 655
Регистрация: 24.06.2010
Сообщений: 10,562
|
|
11.08.2010, 18:19 | 10 |
Цитато из Шилдта:
2
|
В астрале
![]() 8048 / 4805 / 655
Регистрация: 24.06.2010
Сообщений: 10,562
|
|
11.08.2010, 19:45 | 12 |
Evg, Ну да. Это возможно) Просто это раздел Шилдта еще про Си)
0
|
В астрале
![]() 8048 / 4805 / 655
Регистрация: 24.06.2010
Сообщений: 10,562
|
|
11.08.2010, 20:22 | 14 |
Evg, Да я как-то пытался... Но что-то никак. Наверное потому что, я в этом не разбираюсь, и мне это особо пока не нужно.
А это вообще может использоваться? Может просто компиль нормально на это реагирует?
0
|
![]() ![]() |
|
11.08.2010, 20:27 | 15 |
Компилятор это ест (по крайней мере g++ и borland), так что скорее всего это из стандарта Си++. Как это может использоваться - не знаю. Хотелось бы узнать. Чтобы в очередной раз высказать "фи" в сторону Си++
0
|
В астрале
![]() 8048 / 4805 / 655
Регистрация: 24.06.2010
Сообщений: 10,562
|
|
11.08.2010, 20:37 | 16 |
0
|
![]() ![]() |
|
11.08.2010, 21:17 | 17 |
Могу ответственно заявить, что автор статьи - дятел. В том плане, что эллиптические аргументы должны доставаться совсем не так, как он написал, а через интерфейсы va_arg (из stdarg.h)
Новичкам показывать эту статью строго запрещается. Понятно, что если человек всю жизнь будет работать только на intel'овской архитектуре, может быть так и можно делать, но ведь заранее никому неизвестно, как будут меняться программные соглашения по передаче параметров в будущих intel'овских процессорах. Да и незачем приучать людей к неправильным вещам
0
|
155 / 102 / 12
Регистрация: 22.07.2010
Сообщений: 443
|
||||||
11.08.2010, 21:28 | 18 | |||||
Вот рабочий пример функции sum(int,...):
1
|
В астрале
![]() 8048 / 4805 / 655
Регистрация: 24.06.2010
Сообщений: 10,562
|
|
11.08.2010, 21:30 | 19 |
Evg, Суть в том, что использовать такую функцию
int foo(...) - нереально. Ибо нету конечного значения никакого. Следовательно не возможно сие сделать. Несмотря на то, что компилятор на это не ругается. И да. Как уже писали здесь в С++0x для этого будет предназначены шаблоны с переменным числом параметров
0
|
![]() ![]() |
|
11.08.2010, 21:33 | 20 |
Именно поэтому мне хочется высказать "Фи" в адрес разработчиков Си++. Либо всё-таки какая-то потаённая возможность есть. Либо закладывались на такие архитектурно-зависимые случаи.
0
|
11.08.2010, 21:33 | |
Помогаю со студенческими работами здесь
20
Написать функцию с переменным числом аргументов
Инициализация std::tuple переменным числом аргументов Искать еще темы с ответами Или воспользуйтесь поиском по форуму: |