私はこのように見えるいくつかのコードを持っています:
class Writable {
public:
virtual void putc(const char ch) = 0;
protected:
virtual ~Writable() {};
};
class Readable {
public:
virtual char getc() = 0;
protected:
virtual ~Readable() {};
};
2つの仮想関数に注目してください。を使用してこれを(他のコードと一緒に)コンパイルし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
この大きな違いは、例外によるものと思われます。これを防ぐ方法はありますか?