Najprawdopodobniej jest zaimplementowany jako (lub jego wariant):
void print_fibs()
{
}
int ignore = (print_fibs(), 0);
int main() {}
W tym kodzie zmienna globalna ignoremusi zostać zainicjowana przed wejściem do main()funkcji. Teraz, aby zainicjować globalną, print_fibs()należy wykonać, gdzie możesz zrobić wszystko - w tym przypadku oblicz liczby Fibonacciego i wydrukuj je! Podobną rzecz pokazałem w następującym pytaniu (które zadałem dawno temu):
Należy pamiętać, że taki kod nie jest bezpieczny i należy go generalnie unikać. Na przykład std::coutobiekt może nie zostać zainicjowany podczas print_fibs()wykonywania, jeśli tak, to co zrobiłoby std::coutw funkcji? Jeśli jednak w innych okolicznościach nie zależy to od takiej kolejności inicjalizacji, można bezpiecznie wywołać funkcje inicjalizacyjne (co jest powszechną praktyką w C i C ++).