'__gnuc_va_list' не был объявлен - PullRequest
0 голосов
/ 01 мая 2019

Я пытаюсь построить большой проект со множеством каталогов и подкаталогов, некоторые из которых используются для создания разных библиотек. используя GNU make, используя те же флаги компиляции. большинство папок успешно скомпилировано, но в определенной папке сборка не удалась, и появляется много ошибок, которые отсутствуют в некоторых определениях. Например, первая ошибка:

В файле, включенном в /usr/include/c++/4.8.2/cwchar:44:0, из /usr/include/c++/4.8.2/bits/postypes.h:40, из /usr/include/c++/4.8.2/iosfwd:40, из /usr/include/c++/4.8.2/memory:72, ...

/ usr / include / wchar.h: 614: 9: ошибка: __ __gnuc_va_list ’не было объявлен

     __gnuc_va_list __arg

) эта ошибка происходит из простого #include at файлов в этой библиотеке, но такая же ошибка возникает для любого файла и для различных заголовков стандартной библиотеки.

Сильной стороной является то, что этот проект был полностью успешно построен до того, как я получил некоторые обновления из удаленного репозитория. при этом слиянии в этот файл не было внесено никаких изменений Пытался использовать

g++ -E /usr/include/wchar.h | grep __gnuc_va_list | head -1

результат:

typedef __builtin_va_list __gnuc_va_list;

Как я вижу в этом ответе , __builtin_va_list должен быть создан gcc, и он, вероятно, создал его - в противном случае многие другие файлы не смогли скомпилировать

Я не могу понять, почему это происходит и почему только в этой папке / lib.

1 Ответ

0 голосов
/ 29 июня 2019

У меня была такая же проблема для libhydrogen в windows и mingw 5.3.0, вы можете просто определить его следующим образом:

typedef void* __gnuc_va_list;

... затем он скомпилировался и поставленный tests.c сработал.

Я думаю, что для систем Unix это (не уверен):

typedef char* __gnuc_va_list;
...