Wie kann man gcc warnen lassen, wenn die Adresse lokaler Variablen zurückgegeben wird?

Mitgcc 4.4.5, Ich habe eine Warnung mit folgendem Code.

char *f(void)
{
    char c;
    return &c;
}

Wenn ich jedoch einen temporären Zeiger verwende, wird keine Warnung mehr angezeigt (auch wenn das Verhalten falsch ist).

char *f(void)
{
    char c;
    char *p = &c;
    return p;
}

Ich habe gehört, dass die Zeigeranalyse in C schwierig ist, aber es kanngcc vor solchem ​​Code warnen?

Antworten auf die Frage(2)

Ihre Antwort auf die Frage