In einen Code wie diesen in unserer Code-Basis gestoßen ... was mich besorgt machte.Rückgabewert aus lokalem Bereich?
int foo(int a); // Forward declaration.
int baz() {
int result = {
int a = dosomestuff();
foo(a);
} ? 0 : -1;
return result;
}
- Ist das Verhalten dieser Code gut definiert?
- Wird es wirklich funktionieren, dass
result
Variable mit 0 oder -1 geladen wird abhängig von dem Rückgabewert von ?
Für Interesse: Der Code wurde nicht wie das ursprünglich geschrieben - aber ist es, was ich diese unschuldig aussehenden vorstellen Makro ...
ausrollen wirdint foo(int a); // Forward declaration.
#define BAR() { int a = dosomestuff(); foo(a); }
int baz() {
int result = BAR() ? 0 : -1;
return result;
}
Yow. Welcher C-Compiler akzeptiert das? gcc tut es sicherlich nicht. – aschepler
@ascheppler: Ironischerweise scheint GCC der * einzige * Compiler zu sein, der es akzeptiert! Siehe Michael Burrs Antwort. –
Der Compiler ist VisualDSP ++ von Analog Devices. Ich werde morgen wahrscheinlich um Unterstützung bitten. –