フラグは実行時であるため、このフラグを常にチェックすることは避けられません。少なくとも、そのようなことは考えられません。
ただし、メモリとコードを減らすことはできます。私はこのようにします:
メモリ使用量を減らすには:
struct z_x* = NULL;
struct z_y* = NULL;
//...
if( flag )
{
z_x = malloc( sizeof( struct x ) );
}
else
{
z_y = malloc( sizeof( struct y ) );
}
コードを減らすために、常に次のように書くのではなく、次のようにします。
if( flag )
{
// do operations_N with z_x
}
else
{
// do operations_N with z_y
}
私は書くだろう:
operations_N( z_x, z_y, flag );
どこ
void operations_N( struct x* z_x, struct y* z_y, flag )
{
if( flag )
{
// do operations_N with z_x
}
else
{
// do operations_N with z_y
}
}
もちろん、operations_1
いくつflag
かの適切で論理的な名前が必要です。
ただし、これによりいくつかの問題が発生する可能性があるため、このアプローチを使用する場合は注意が必要です。