私たちのコードベースでこのようないくつかのコードにぶつかって...私は心配しました。ローカルスコープからの戻り値?
int foo(int a); // Forward declaration.
int baz() {
int result = {
int a = dosomestuff();
foo(a);
} ? 0 : -1;
return result;
}
- 明確に定義されたこのコードの動作ですか?
foo(a)
の戻り値に応じて、result
変数に0または-1がロードされるのは本当ですか?関心を
:コードは、もともとそのように書かれていなかった - しかし、それは私がそれだから、この無実に見えるマクロが
int foo(int a); // Forward declaration.
#define BAR() { int a = dosomestuff(); foo(a); }
int baz() {
int result = BAR() ? 0 : -1;
return result;
}
YOW。 Cコンパイラはそれを受け入れますか? gccは確かにしません。 – aschepler
@aschepler:皮肉なことに、GCCはそれを受け入れる*唯一のコンパイラだと思われます!マイケル・バーの答えを見てください。 –
コンパイラはAnalog Devices社のVisualDSP ++です。私はおそらくこの明日のサポートを頼むだろう。 –