![]() |
Здравствуйте, гость ( Вход | Регистрация )
![]() |
ido |
![]()
Сообщение
#1
|
Студент ![]() Группа: Участник Сообщений: 26 Регистрация: 7.4.2010 Пользователь №: 1602 Спасибо сказали: 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 |
|
|
![]() |
Iron Bug |
![]()
Сообщение
#2
|
![]() Профессионал ![]() ![]() ![]() ![]() ![]() Группа: Модератор Сообщений: 1611 Регистрация: 6.2.2009 Из: Yekaterinburg Пользователь №: 533 Спасибо сказали: 219 раз(а) Репутация: ![]() ![]() ![]() |
насколько мне известно, исходя из данных, в va_arg/va_list тип определить невозможно. тип должен определяться как-то извне. в printf и т.п. для этого парcится строка с форматом. если формат не совпадает - возникает ошибка обращения к памяти.
Сообщение отредактировал Iron Bug - 20.3.2011, 20:24 |
|
|
ido |
![]()
Сообщение
#3
|
Студент ![]() Группа: Участник Сообщений: 26 Регистрация: 7.4.2010 Пользователь №: 1602 Спасибо сказали: 0 раз(а) Репутация: ![]() ![]() ![]() |
в printf и т.п. для этого парcится строка с форматом. Т.е парсится во время компиляции каким-то макросом, размещается в некой структуре по каким-то правилам? Тогда в исходниках(gcc) должна быть последовательность выполняемых операций.В ChangeLog’e gcc-2.95 есть единственное упоминание: ginclude/varargs.h(va_dcl): Use word_mode for type of __builtin_va_list В gcc-3.3 много, где используется. Используется, но не определяется. Вот, пример из c-common.c: (* lang_hooks.decls.pushdecl) (build_decl (TYPE_DECL, get_identifier("__builtin_va_list"), ptrdiff_type_node)); Но, что бы это значило… |
|
|
![]() ![]() ![]() |
![]() |
|
Текстовая версия | Сейчас: 9.5.2025, 4:31 |