inicjalizacja zmiennej statycznej wywołaniem funkcji powoduje błąd kompilacji?
#include <stdio.h>
int foo(){
return 1;
}
int main(void) {
static int q = foo();
return 0;
}
Oto link do tego samego. To jest kod C, a nie C ++. Kompiluje się i działa poprawnie w C ++, ale nie w C.
Ten kod otrzymywał błąd kompilacji. Czy ktoś może wyjaśnić, dlaczego pojawia się błąd? Czy elementy statyczne mogą być inicjowane tylko przez wartości stałe? W C ++ musimy DEFINIOWAĆ statyczne elementy po zadeklarowaniu ich, dlaczego nie jest to wymagane w C? Nie mogłem znaleźć żadnego wątku z podobnym zapytaniem lub dobrą odpowiedzią.