正如这个答案所述,当包含库时,由于创建了
我经常为内存受限的嵌入式平台编译代码。在包含库后,二进制文件变得非常大以至于无法适应内部闪存。这反过来影响了可以包含的库,因为其中许多库都包含。一个例子是
对于那些运行在嵌入式平台上的目标,我不需要创建这些对象,因为我永远不会使用它们。问题是:我怎么能防止创建这些对象?或者是否有其他解决方法可以包含使用的库,并且不会使二进制文件大小增加太多?
std::cin
、std::cout
、std::cerr
等对象,因此占用了大量内存,导致二进制文件的大小大幅增加。我经常为内存受限的嵌入式平台编译代码。在包含库后,二进制文件变得非常大以至于无法适应内部闪存。这反过来影响了可以包含的库,因为其中许多库都包含。一个例子是
Protobuf
库,因为它包含,所以我不能在多个项目中使用它。对于那些运行在嵌入式平台上的目标,我不需要创建这些对象,因为我永远不会使用它们。问题是:我怎么能防止创建这些对象?或者是否有其他解决方法可以包含使用的库,并且不会使二进制文件大小增加太多?
iostream
。 - Ronmain
函数之前运行的启动和初始化代码。通常还会使用专门构建的库,禁用诸如std::cout
等子系统(或者至少使这些对象变得更小且“空白”)。 - Some programmer dude#define _GLIBCXX_IOSTREAM 1
(这样它就不会满足iostream头文件开头的#ifndef
)。但是,您需要定义自己的虚拟版本来替代这些库所引用的任何内容。 - ChrisDiostream
的库”,而不是对我来说无关紧要的“也许还有其他解决方法”或简洁的“有办法吗”的区别。这个引语绝对没有虚伪之处,只是缺少引用格式(为改写部分缺少[])。 - Max Langhof