crossplatform.ru

Здравствуйте, гость ( Вход | Регистрация )

ido
  опции профиля:
сообщение 19.3.2011, 15:37
Сообщение #1


Студент
*

Группа: Участник
Сообщений: 26
Регистрация: 7.4.2010
Пользователь №: 1602

Спасибо сказали: 0 раз(а)




Репутация:   0  


При подключении gdktypes.h из gtk+-2.2 в препроцессорном листинге есть строки

typedef __builtin_va_list __gnuc_va_list;
typedef __gnuc_va_list va_list;

У __builtin_va_list неизвестен базовый тип. В каком файле его можно найти?

P.S. gcc 4.1.1
Перейти в начало страницы
 
Быстрая цитата+Цитировать сообщение
 
Начать новую тему
Ответов
ido
  опции профиля:
сообщение 23.3.2011, 20:27
Сообщение #2


Студент
*

Группа: Участник
Сообщений: 26
Регистрация: 7.4.2010
Пользователь №: 1602

Спасибо сказали: 0 раз(а)




Репутация:   0  


Всё кажется понял.
Например, есть функция
 va_start (args, message_format);
      msg = g_strdup_vprintf (message_format, args);
      va_end (args);

Макросы va_start/va_end – поддержка рантайма. Они прогоняют аргументы функции через стэк.
 #define va_arg(v,l)    __builtin_va_arg(v,l)

 /* varargs.h. */
#ifndef __va_list__
#define __va_list__
typedef char *va_list;
#endif
#define va_dcl int va_alist;
#define va_start(list) list = (char *) &va_alist
#define va_end(list)
#define va_arg(list,mode) ((mode *)(list += sizeof(mode)))[-1]

Только __builtin_va_arg теряется где-то в парсерах/лексерах.
Перейти в начало страницы
 
Быстрая цитата+Цитировать сообщение

Сообщений в этой теме


Быстрый ответОтветить в данную темуНачать новую тему
Теги
Нет тегов для показа


2 чел. читают эту тему (гостей: 2, скрытых пользователей: 0)
Пользователей: 0


RSS Рейтинг@Mail.ru Текстовая версия Сейчас: 13.4.2025, 22:34