nixp.ru v3.0

18 января 2017,
среда,
15:06:23 MSK

DevOps с компанией «Флант»
anonymous написал 19 мая 2004 года в 12:33 (857 просмотров) Ведет себя неопределенно; открыл 1814 темы в форуме, оставил 5575 комментариев на сайте.

Есть ф-ция принимеющая один из аргументов тип va_list :

void gtk_list_store_set_valist (GtkListStore *list_store, GtkTreeIter *iter, va_list var_args);

Как мне подготовить эту переменную (var_args) для использования этой ф-ции.

P.S. Это не вопрос по gtk т.к. ф-ция могла бы быть любой — мне важно подготовить эту переменную.

anonymous

в man 3 va_start есть рабочий пример.

anonymous
cebkaw
в man 3 va_start есть рабочий пример.

В мане не такой пример. Мне нужно вызывать

эту ф-цию причем с агументом типа va_list. Для этого мне нужно подготовить этот параметр, вот я и спрашиваю как мне этот параметр подготовить.

anonymous

Функции такого рода предназначены для создания функций оболочек:

void some_func (int var, …)

{

va_list ap;

va_start (ap, var);

gtk_list_store_set_valist (*list_store, *iter, ap);

va_end (ap);

}

Создавать такие списки искуственно смысла не имеет, т.к. они рассчитаны на работу со стеком.

anonymous

Т.е. получается что эту ф-цию (gtk_list_store_set_valist) можно вызывать только из ф-ции с переменным числом аргументов? А подготовить этот параметр из ф-ции с фиксированным кол-вом параметров нельзя?

anonymous

http://developer.gnome.org/doc/API/2.0/gtk/GtkListStore.html

Просто взять аналог этой функции с переменным числом аргументов и без va_list — gtk_list_store_set. Функции, принимающиеva_list в качестве аргумента предназанчены исключительно для вызова из функций с переменным числом аргументов (например, функции-обертки).

anonymous

А если я незнаю заранее какие и сколько у меня будут аргументы. Например если у меня есть масив с этими строками, можно ли их как-нибудь подставить в ф-цию с переменным числом аргументов.

anonymous

va_list — это же указатель на участок стека, где кончаются статические данные. Если мы va_list присвоим значение этого массива, то что нам грозит? Надо пробовать, я не уверен точно. Стандарт требует многоточия.

ecobeingecobeing.ru
Экология и вегетарианство на благо всем живым существам Планеты.