【发布时间】:2017-09-26 08:39:48
【问题描述】:
这是我的场景: 我正在开发一个嵌入式 linux 系统并获得一个用 C++ 编写的共享库。除了需要 libstdc++ 外,它运行良好,这意味着占用了额外的 1M 内存。我想把共享库转换成C,这样可以节省1M内存。
我知道如何手动将 C++ 代码转换为 C,但这真的很无聊。所以我搜索了解决方案并得到了一个类似的问题:Use Clang to convert C++ to C code。但是生成的代码不可读。我想获得可维护的 C 源代码以淘汰原始 C++ 代码。
我是 Clang 的新手。我了解到Clang can be used to build a tool that processes code。我的问题是:
- 是否可以使用 Clang 来实现我的目标?
- 如果可能,我该怎么做?具体来说,第一步如何使用 Clang 去除宏包裹的代码块?
【问题讨论】:
-
C 和 C++ 是两种不同的语言。在两种语言之间进行翻译并不容易,也不容易实现自动化。您是否曾尝试从 googletranslate 中获取可读的内容?
-
您是否第一次尝试 1. 使用
-Os编译 2. 重写 C++ 代码以摆脱尽可能多的模板(这里当然是空间/速度权衡) 3. 静态链接所有内容?如果没有,请先尝试,将代码自动转换为 C 将无法正常工作。 -
其实你不需要
libstdc++,因为它是C++。您可以使用gcc而不是g++链接您的C++ 程序,而不是链接libstdc++。您必须删除对std、异常、RTTI 等的所有引用,但您已经愿意这样做... -
@Paladin 我会试试的,非常感谢。
-
我完全不确定删除模板是否会赢得空间(可能恰恰相反)。例如,标准容器实现的编写和调整都非常好。