如this回答所述,当包含iostream
库时,二进制大小变得更大,因为std::cin
,std::cout
,std::cerr
(甚至更多) )对象被创建,从而占用大量内存。
我经常为对内存有严格限制的嵌入式平台编译代码。在包含iostream
库之后,二进制文件变得很大,以至于它无法放入内部闪存中。这反过来会影响可以包含的库,因为其中很多都包含<iostream>
。其中一个示例可以是Protobuf
库,因为它包含iostream
,所以我不能在多个项目中使用它。
对于在嵌入式平台上运行的那些目标,我不需要创建对象,因为我永远不会使用它。问题是:我能以某种方式阻止创建那些对象吗?也许还有其他解决方法可以允许包含使用iostream
的库,而又不会太大地增加二进制文件的大小吗?
答案 0 :(得分:2)
您不能以标准方式,因为需要<iostream>
来定义这些变量。如果您不希望使用变量,则必须直接包含标头(如<ios>
,<streambuf>
,<istream>
,<ostream>
和/或<iosfwd>
)。我假设您想为这些标头中定义的类包括<iostream>
。如果您使用的某些第三方库包含了您不想要的内容,那么您必须咨询该库的作者,就没有通用的答案。