关闭。这个问题需要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++可以接受Int
或 Char
如果正确地告知声明,则作为数据类型。好吧,它们并不是真正的类型,但很可能是 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/