我的工作是为一些没有虚拟内存的绝对古老的硬件开发代码。正因为如此,我们试图尽量减少对象和二进制文件的文本大小,所以我们不会耗尽内存。这可能意味着我们需要限制使用来自 STL 的模板,或者彻底禁止它们。在四处寻找一种最小化文件大小并仍然使用模板的方法时,我遇到了-frepo
g++ 的选项。几次测试之后,我比开始时更加困惑。当使用 -frepo 时,最终的二进制文件大小相同或更大,这对我来说没有意义。谁能向我解释这个选项实际上做了什么(除了“它只是工作”,因为这是 GCC 4.7.1 手册中的解释)以及我可能如何滥用它?
正在编译g++ -c -frepo main.cpp test8.cpp
和链接g++ test8.o main.o
.rpo 文件正在创建中。
测试8.h:
#include <list>
using namespace std;
class Test
{
public:
Test ();
list<int> makeNewIntList ();
private:
list<int> intList;
};
测试8.cpp:
#include "test8.h"
#include <list>
using namespace std;
Test::Test()
{
intList = list<int>( 10, 12 );
}
list<int> Test::makeNewIntList()
{
intList.push_back(4);
return intList;
}
主文件
#include "test8.h"
using namespace std;
void findFive (int num);
list<int> makeIntList();
int main( int argc, char* argv[])
{
Test test;
list<int> intList = test.makeNewIntList();
list<int> intList2 = makeIntList();
list<float> floatList = list<float> (10,12);
floatList.push_back(5);
}
list<int> makeIntList()
{
list<int> intList = list<int> (10,12);
return intList;
}
我们正在使用 GCC 4.1.2。另请注意,GCC 4.7.0 也好不到哪里去,升级编译器不是一个可行的解决方案。