尚未声明“ __gnuc_va_list”

时间:2019-05-01 11:24:22

标签: gcc g++ gnu-make

我尝试构建具有许多目录和子目录的大型项目,其中一些用于创建不同的库。  使用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

) 该错误来自此lib中文件的简单#include at,但是对于任何文件和不同的标准库头,都会发生相同类型的错误。

优点是,在我从远程存储库中提取一些更新之前,该项目已完全成功构建。在此合并中,对此文件未做任何更改。 尝试使用

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

结果是:

  

typedef __builtin_va_list __gnuc_va_list;

我看到at this answer,__ builtin_va_list应该由gcc创建,并且可能确实创建了它,否则很多其他文件都无法编译

我不明白为什么会发生这种情况,以及为什么只在此文件夹/ lib下出现。

1 个答案:

答案 0 :(得分:0)

我在Windows和mingw 5.3.0上对libhydrogen遇到相同的问题,您可以将其定义为:

typedef void* __gnuc_va_list;

...然后进行编译,并且所提供的tests.c起作用。

我认为对于unix系统,它(不确定):

typedef char* __gnuc_va_list;