armccコンパイラを使用して組み込みソフトウェアを開発しています。デバッグ目的で、 -O0フラグを使用して最適化を最小限に抑えます。コードをわかりやすくするために、いくつかの列挙型と構造体の定義をパブリック アクセスを持つクラスに移動しました。
これから:
enum A{
a,
b,
c,
d
};
struct C{
int q;
int w;
int e;
};
class myClass{
....
};
これに:
class myClass{
public:
enum A{
a,
b,
c,
d
};
struct C{
int q;
int w;
int e;
};
....
};
そして、myClass のようにそれらに到達します。
myClass::C new_struct;
new_struct.q= myClass::a;
しかし、驚いたことに、コードに他に違いはなくても、コード サイズが 600 バイトほど増加しました。列挙型を直接の値に置き換えるコンパイラの最適化 (-O0 でもいくつかの最適化がアクティブになっている) が原因であると思いますが、これについてはわかりません。コード サイズが増加した原因 (または、最適化が妨げられた原因) は何ですか?