Справочник функций

Ваш аккаунт

Войти через: 
Забыли пароль?
Регистрация
Информацию о новых материалах можно получать и без регистрации:

Почтовая рассылка

Подписчиков: -1
Последний выпуск: 19.06.2015

Можно ли передать переменное число параметров из однои функции в другую?

18K
26 ноября 2008 года
vitaliks
6 / / 02.08.2006
Можно ли передать переменное число параметров из однои функции в другую?
Например:
void vTest(char* cpFormat, ...)
{
printf("%s\r\n", cpFormat);
}

int main(void)
{
vTest("Test %s", "me");
return 0;
}

в данной ситуации результат будет "Test %s",
но можно ли получить "Test me" не используя va_start, .......
3
26 ноября 2008 года
Green
4.8K / / 20.01.2000
Цитата: vitaliks
Можно ли передать переменное число параметров из однои функции в другую?
но можно ли получить "Test me" не используя va_start, .......


Если говорить о C++, то по-хорошему не можно, а нужно.
Использование переменного числа параметров в C++ не есть хороший стиль.
Передавать "переменное число параметров" можно по-разному, все зависит от конкретной ситуации.
Например, можно просто использовать контейнер.

18K
26 ноября 2008 года
vitaliks
6 / / 02.08.2006
Цитата: Green
Если говорить о C++, то по-хорошему не можно, а нужно.
Использование переменного числа параметров в C++ не есть хороший стиль.
Передавать "переменное число параметров" можно по-разному, все зависит от конкретной ситуации.
Например, можно просто использовать контейнер.


Меня интересует как это сделать по возможности не используя дополнительную память?

3
26 ноября 2008 года
Green
4.8K / / 20.01.2000
Цитата: vitaliks
Меня интересует как это сделать по возможности не используя дополнительную память?


А в чем проблема с памятью?
Разница при передаче параметров через стек или через контейнер это десятки байт.

18K
27 ноября 2008 года
vitaliks
6 / / 02.08.2006
Цитата: Green
А в чем проблема с памятью?
Разница при передаче параметров через стек или через контейнер это десятки байт.



Если не очень тяжело, может приведи какой нибуть маленький примерчик :rolleyes:

11
27 ноября 2008 года
oxotnik333
2.9K / / 03.08.2007
Код:
#include <vector>
#include <string>
#include <iostream>
#include <conio.h>


using namespace std;


void MyFunc (vector<string>);


int _tmain(int argc, _TCHAR* argv[])
{
    vector<string>Params;
    Params.push_back("first param;");
    Params.push_back("second param;");
    Params.push_back("third param;");
    Params.push_back("fourth param;");
    Params.push_back("fifth param;");
    MyFunc(Params);
    _getch();
    return 0;
}

void MyFunc (vector<string>Params)
{
    for (int i = 0; i < (int)Params.size(); i++)
        cout<<Params.c_str()<<endl;
}
18K
27 ноября 2008 года
vitaliks
6 / / 02.08.2006
Цитата: oxotnik333
Код:
#include <vector>
#include <string>
#include <iostream>
#include <conio.h>


using namespace std;


void MyFunc (vector<string>);


int _tmain(int argc, _TCHAR* argv[])
{
    vector<string>Params;
    Params.push_back("first param;");
    Params.push_back("second param;");
    Params.push_back("third param;");
    Params.push_back("fourth param;");
    Params.push_back("fifth param;");
    MyFunc(Params);
    _getch();
    return 0;
}

void MyFunc (vector<string>Params)
{
    for (int i = 0; i < (int)Params.size(); i++)
        cout<<Params.c_str()<<endl;
}



Sorry что сразу не написал, но меня интересует простой Си а не С++,
при этом это решение дожно использоватся на разных платформах.

Реклама на сайте | Обмен ссылками | Ссылки | Экспорт (RSS) | Контакты
Добавить статью | Добавить исходник | Добавить хостинг-провайдера | Добавить сайт в каталог