我有一些看起来像这样的代码:
class Writable {
public:
virtual void putc(const char ch) = 0;
protected:
virtual ~Writable() {};
};
class Readable {
public:
virtual char getc() = 0;
protected:
virtual ~Readable() {};
};
注意两个虚函数。编译这个(连同我的其他代码)使用arm-none-eabi-gcc
,并链接-fno-exceptions
产生这个输出:
arm-none-eabi-size --format=berkeley bareCortexM.elf
text data bss dec hex filename
108948 2304 2372 113624 1bbd8 bareCortexM.elf
用方法存根代替纯虚函数再次运行它会产生:
arm-none-eabi-size --format=berkeley bareCortexM.elf
text data bss dec hex filename
47340 2296 304 49940 c314 bareCortexM.elf
这种巨大的差异似乎是由于例外。有什么办法可以防止这种情况发生吗?