预安装库(Int,Char等)中的大写通用数据类型

时间:2017-04-11 15:02:21

标签: c++ makefile compiler-errors

我正在开发嵌入式Linux上的一些多媒体软件,并且使用了我曾经发生过的开源库。该库来自供应商,并预先安装在硬件上。我可以确认GNU安装过程是通过autogen/make来构建/链接/安装这个库的,但是,用于创建我自己的程序的头文件都指定了大写字母的常见数据类型。在C.所以我看到名为IntChar的数据类型。具有奇怪大写数据类型的代码块在extern C块内,并且C ++不接受Int作为数据类型!

所以当我使用这些库时,我遇到了编译问题。 autogen生成的makefile似乎从环境中获取了它的标志,我不想在每次需要编译程序时重新编译库。

有没有什么方法可以编译我自己的代码(只是用C编写)而不必修改这些专门为这个硬件制作的库?

CLARITY EDIT:我的任务是编译一个小的C程序,它依赖于预先安装了错误数据类型的头文件。我不想编辑或重新编译这些特定于硬件的头文件。

1 个答案:

答案 0 :(得分:0)

您可能没有执行import / include部分,因此编译器会理解新类型。您不必修改库,但可能必须更改包含它的方式。 extern C不够,因为它只是链接器的提示。如果正确告知声明,C ++可以接受IntChar作为数据类型。好吧,它们不是真正的类型,但很可能是typedef结构,甚至更可能是通过预处理器宏处理它们。我愿意打赌他们已经使用了#define,因此Int被转换为实际的typedef语句。

你有这个库附带的示例代码吗?你可以发布库中的任何标题吗?

[编辑] Engine.h的第100行如下: typedef Int Engine_Error;对我说,你不能包含适当的标题。您还没有包含从编译中获得的错误,它是否为Int指出了未知标识符,或者是否找不到Engine_Error。如果是前者,那么您不包括Engine.h,如果是后者,则您不包含包含Engine_Error定义的任何标头。