2

我正在使用 Code::Blocks 来编写我的程序,并且当我包含<string>(或<iostream>)我的 exe 的大小时会增加。我的程序非常简单,我需要保持它小于 20kb。我很确定这是因为 C++ 标准委员会将旧的 .h 版本换成了许多没有 .h 的新库。但是我如何防止它添加〜43kb?Code::Blocks 是否有设置以便它不会添加额外的 kb 或者我可以使用另一个本机库?

4

5 回答 5

10

如果大小是您的第一个关注点(如果您必须将内容保持在 < 20KB,那么它可能是),那么标准 C++ 库可能不是要走的路。事实上,任何C++(RTTI、异常等)都可能是个坏主意,最好还是坚持使用 C。

于 2010-05-16T23:13:18.477 回答
6

也不<string><iostream>重命名/修改的 C 头文件。它们都是 C++ 的新手。如果您想坚持使用 C 库,您可以使用<cstring><cstdio>(以及其他),它们是 C 头文件的 C++ 版本"string.h""stdio.h".

于 2010-05-16T23:19:46.293 回答
0

没有 .h 的标头版本与其他版本没有什么不同。.h 版本主要是为了兼容性而提供的。额外的大小将是string类,并且大小并不太令人惊讶。如果你不想零大小开销:不要使用 std::string,但是char*.

下一步将是编译器选项。大多数编译器都有可能禁用 RTTI 并优化大小。-Os -fno-rtti将是 gcc 的正确开关。

否则,所有尺寸优化的标准技巧都适用:

  • 没有任何静态数据,总是计算
  • 不要使用虚函数
  • 收拾东西,使用位域
  • 也许 C 比 C++ 更好(这有待商榷。)
于 2010-05-16T23:15:05.293 回答
0

您可以尝试使用编译器开关根据文件大小进行优化。如果你没有得到任何地方,你可以尝试使用stlport但我不确定结果是否会更好。

于 2010-05-16T23:16:01.937 回答
0

请记住在 - 发布模式而不是 - 调试模式下构建您的应用程序。这将大大减少您的应用程序大小。

于 2010-05-16T23:26:13.380 回答