私はそれに接続されているif()
文を持っている#ifdef
ブロック内にカプセル化された関数の中でその機能を持っている:変数othervar
のみ#ifdef
ブロック内で使用されているIF本体の中に変数を宣言するときに欠点はありますか?
int myfunction(void) {
int condition = 0;
#ifdef USE_WHATEVER
int othervar = 0;
#endif /* USE_WHATEVER */
/* some code */
#ifdef USE_WHATEVER
if(condition) {
othervar++;
/* do other things with othervar */
}
#endif /* USE_WHATEVER */
。全体#ifdef
ブロックがif
文があるので、私はif
ブロック内othervar
の宣言を引くこともできます。これは、最初の例よりも私には非常にクリーン思わ
int myfunction(void) {
int condition = 0;
/* some code */
#ifdef USE_WHATEVER
if(condition) {
int othervar = 0;
othervar++;
/* do other things with othervar */
}
#endif /* USE_WHATEVER */
。しかし、そのようなことの欠点(パフォーマンス、...)はありますか?
コンパイラがこれら2つのケースに対して異なるコードを生成した場合、私は驚くでしょう。 – GSerg