Nos metimos en un código como este en nuestra base de códigos ... lo que me preocupó.¿Devuelve el valor del alcance local?
int foo(int a); // Forward declaration.
int baz() {
int result = {
int a = dosomestuff();
foo(a);
} ? 0 : -1;
return result;
}
- está bien definido el comportamiento de este código?
- ¿Funcionará realmente, esa variable
result
se carga con 0 o -1 dependiendo del valor de retorno defoo(a)
?
Por interés: el código no fue escrito originalmente como eso - sin embargo, es lo que me imagino esta macro de aspecto inocente se extenderá a ...
int foo(int a); // Forward declaration.
#define BAR() { int a = dosomestuff(); foo(a); }
int baz() {
int result = BAR() ? 0 : -1;
return result;
}
Yow. ¿Qué compilador de C acepta eso? gcc ciertamente no. – aschepler
@aschepler: irónicamente, parece que GCC es el * único * compilador que lo acepta. Ver la respuesta de Michael Burr. –
El compilador es VisualDSP ++ por Analog Devices. Probablemente pediré ayuda sobre esto mañana. –