c++ - 预安装库中大写的常用数据类型(Int、Char 等)

标签 c++ makefile compiler-errors

关闭。这个问题需要details or clarity .它目前不接受答案。












想改进这个问题?通过 editing this post 添加详细信息并澄清问题.

5年前关闭。




Improve this question




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

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

有什么方法可以编译我自己的代码(只是用 C 语言编写的),而无需修改这些专门为此硬件制作的库?

清晰度编辑:我的任务是编译一个小型 C 程序,该程序依赖于预装的带有错误数据类型的头文件。我不想编辑或重新编译这些特定于硬件的头文件。

最佳答案

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

你有图书馆附带的任何示例代码吗?您可以发布图书馆中的任何标题吗?

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

关于c++ - 预安装库中大写的常用数据类型(Int、Char 等),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/43349636/

相关文章:

c++ - 重新使用已删除的地址分配可以吗?

c++ - 使用 make 将 .o 文件移动到单独的目录

c++ - 根据 Cmake 中的条件包含目录

ios - Apple Mach-O错误Xcode-真的很困惑

c - 在 Swift 模块中使用 C 库的链接器架构错误

c++ - 为什么我不能将这条记录插入mysql数据库?

c++ - C++ 'if' 语句中的变量赋值

winapi - LockWorkStation-编译错误-找不到标识符

c++ - 具有类似转换的枚举、构造函数重载

c++ - 使用 autotools 和附加编译器标志编译库