Warum kommt diese Warnung, wenn man hier static verwendet?
-
warning: initializer element is not a constant expression
Der Code:
int f() { return 3; }; int main(){ static const double x = f(); // ... return 0; }
f() lieft doch immer einen Konstanten Wert zurück, wesshalb also die Warnung?
-
Weil f() zur Compile-Zeit nicht konstant ist, weil es ein Funktionsaufruf ist.
edit: etwas mehr erklärung
x ist static deshalb muss der Wert mit dem du es initialisierst konstant sein,
denn dieser Wert wird beim Compilieren festgelegt (in den Speicher von x geschrieben).
Speziell:
Er befindet sich im .data-Segment und wird beim Laden des Programms mitgeladen
http://en.wikipedia.org/wiki/.data