но как в теле функции узнать параметры???
стандартные средства va_start итд требуют наличия фиксированных параметров, а нужна возможность вызова без параметров.
Re: функции с переменным числом аргументов, но без фиксирова
C>но как в теле функции узнать параметры??? C>стандартные средства va_start итд требуют наличия фиксированных параметров, а нужна возможность вызова без параметров.
Здравствуйте, _Dreamer, Вы писали:
_D>Вам такие задачи инопланетяне чтоли ставят ? _D>упаковывайте параметры в структуру и передавайте структурой. или массивом. но через стек то зачем ?
256 аргументов это крайний случай, которого скорее всего никогда не будет, но возможность предусмотрена должна быть, а если создать структуру 256 элементов, то ВСЕГДА прийдется передавать по килобайту памяти.
Re[5]: функции с переменным числом аргументов, но без фиксир
От:
Аноним
Дата:
16.02.07 10:54
Оценка:
Здравствуйте, Chegermek, Вы писали:
C>Здравствуйте, _Dreamer, Вы писали:
_D>>Вам такие задачи инопланетяне чтоли ставят ? _D>>упаковывайте параметры в структуру и передавайте структурой. или массивом. но через стек то зачем ?
C>256 аргументов это крайний случай, которого скорее всего никогда не будет, но возможность предусмотрена должна быть, а если создать структуру 256 элементов, то ВСЕГДА прийдется передавать по килобайту памяти.
а как насчет ссылок или указателей?
Re[5]: функции с переменным числом аргументов, но без фиксир
Здравствуйте, Chegermek, Вы писали:
C>Здравствуйте, _Dreamer, Вы писали:
_D>>Вам такие задачи инопланетяне чтоли ставят ? _D>>упаковывайте параметры в структуру и передавайте структурой. или массивом. но через стек то зачем ?
C>256 аргументов это крайний случай, которого скорее всего никогда не будет, но возможность предусмотрена должна быть, а если создать структуру 256 элементов, то ВСЕГДА прийдется передавать по килобайту памяти.
по мойму, кто то кого то недопонимает
struct some_params
{
std::vector< int > values;
};
void some_fun( const some_params * params = NULL ) // всегда sizeof(const some_params *) байта, а не килобайт вовсе
{
// ...if ( params == NULL )
{
// без параметров
}
}
int main()
{
some_params params;
// ... заполняем
some_fun( ¶ms );
some_fun();
}
Re[6]: функции с переменным числом аргументов, но без фиксир
если не передавать, то хранить килобайтную структуру в которой заполнены 3 поля тоже не охота, а вообще интересно не совсем это, а то, что если язык позволяет это делать, то должен быть способ.
Re[7]: функции с переменным числом аргументов, но без фиксир
Здравствуйте, Chegermek, Вы писали:
C>если не передавать, то хранить килобайтную структуру в которой заполнены 3 поля тоже не охота, а вообще интересно не совсем это, а то, что если язык позволяет это делать, то должен быть способ.
1. std::vector с 3 элементами занимает отнюдь не килобайт.
2. Даже если и занимал бы: у вас что, пары лишних килобайт нет?
3. FYI, C++ позволяет, а C99 не позволяет. Так что, возможно, такие функции из языка вообще уберут.
Кроме того, самый кошерный способ передачи последовательности такой:
Re[8]: функции с переменным числом аргументов, но без фиксир
От:
Аноним
Дата:
16.02.07 12:52
Оценка:
Здравствуйте, Roman Odaisky, Вы писали:
RO>1. std::vector с 3 элементами занимает отнюдь не килобайт.
я имел в виду свой случай с 256 параметрами RO>2. Даже если и занимал бы: у вас что, пары лишних килобайт нет?
зависит от платформы RO>3. FYI, C++ позволяет, а C99 не позволяет. Так что, возможно, такие функции из языка вообще уберут.
убрать не должны из за совместимости
RO>Кроме того, самый кошерный способ передачи последовательности такой: RO>
C>но как в теле функции узнать параметры??? C>стандартные средства va_start итд требуют наличия фиксированных параметров, а нужна возможность вызова без параметров
Если тебе извесны какие типы, и ты говорил что ты знаеш даже какой, то не проще ли сделать так.
например возмем для примера тип T.
void SomeFun( const T &t, ... );
я не волшебник, я только учусь!
Re: функции с переменным числом аргументов, но без фиксирова
От:
Аноним
Дата:
17.02.07 20:25
Оценка:
Здравствуйте, Chegermek, Вы писали:
C>язык с++ позволяет объявить функцию вот так:
C>
C>void SomeFun(...)
C>{
C>// сделать что нибудь
C>}
C>
C>но как в теле функции узнать параметры??? C>стандартные средства va_start итд требуют наличия фиксированных параметров, а нужна возможность вызова без параметров.
стандартными средствами такое сделать нельзя, но почему бы не создать один фиктивный первый аргумент,
если уж так хочется прострелить себе ногу.
Re: функции с переменным числом аргументов, но без фиксирова
Все эмоциональные формулировки не соотвествуют действительному положению вещей и приведены мной исключительно "ради красного словца". За корректными формулировками и неискажённым изложением идей, следует обращаться к их автором или воспользоваться поиском