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ą.

questionAnswers(3)

yourAnswerToTheQuestion