2015-05-17 138 views
0

我想用std::string命名空间+成员,但我不希望我的文件的大小由#include <string>文件的大小增加。源代码::命名空间

是否有任何地方,我能找到的std ::命名空间的源代码,这样我就可以提取串部件,并把它放在我的源代码,所以我没有得到我的二进制文件的大小增加了多少?

请给我一些建议,谢谢!

+0

嗯...字符串文件本来就不大,如果我看到它有类的字符串,u16string, u32string和wstring以及这个头文件中的一些全局函数。 (http://www.cplusplus.com/reference/string/string/) – danielspaniol

+1

'std :: string'甚至不存在于'string.h'中。唯一可以获得'std :: string'定义的便携方式是'#include '。你可以找到* std :: string的源代码,因为它有多个实现。更不用说包含头文件的事实不会导致二进制大小的增加。 – Mankarse

+2

“...所以我不会增加我的二进制大小。” - 你*添加代码*。如果你不希望增加你的程序大小,那么除非你打算在其他地方切断,否则你会大失所望。你真的确定了多少*超出了可接受的范围*你的代码占用了''包括*和使用*?而fyi,'std :: string'在''中,而不是'string.h'。无论如何,我的建议是使用as-designed;如果你负担不起,不要使用它。 – WhozCraig

回答

0

如果在Linux上使用GCC(直通g++),它是免费软件和标准库的源代码是可用的。所以你可以学习它的<string>头文件(其中的一些头文件可能使用编译器魔法,比如内建函数或属性)。

请注意,如果你#include <string>并要求编译器优化(使用-Os大小,或使用-O2速度),它很可能uneeded功能将不进来,最后通常libstdc++动态链接(作为共享对象),所以不消耗在每一个程序的空间(但在多个进程共享)

+0

这是我一直在寻找的-Os开关,但感谢给我的头! –