Linia wskazująca, że kompilacja generuje ostrzeżenie. Rozdzielmy twoją funkcję InitializeHero
.
person hero = {0,0, {0,0}};
Tutaj jesteś uruchamianiu nowego person
struct nazwie hero
. Użyj metody inicjowania nawiasów, aby ustawić członków struktury. W tym przypadku jedynym członkiem person
jest loc
. Sam model loc
ma tylko dwie wersje:,. Używając tutaj metody inicjalizacji nawiasów, po prostu użyjesz {0, 0}
.
Połączenie tych dwóch, można napisać oświadczenie jak:
person hero = {{0, 0}};
pamiętać, że można używać tylko podczas inicjalizacji inicjalizacji nawiasów. Pozostałe dwa stwierdzenia to przypisania. Struktura została już zainicjowana w tym momencie, dlatego te dwie instrukcje nie są kompilowane.
Jedna uwaga, Twój zmienna globalna static person hero
została zasłonięta przez zmienną lokalnyhero
w InitializeHero
. Oznacza to, że tworzysz osobną strukturę person
w swoim InitializeHero
. Jednak ta statyczna zmienna jest inicjowana, gdzie jest zadeklarowane w tym przypadku, więc oświadczenie musi czytać
static person hero = {{0, 0}};
... pozostawiając InitializeHero
nieużywane.
Huh? Twoja pierwsza inicjalizacja nie * nie * kompiluje. Masz 4 skalary wewnątrz '{}' i tylko 2 skalarne elementy w strukturze. Jest to błąd w C. – AnT
Mniej lub bardziej duplikat do: http://stackoverflow.com/q/24138140/694576 – alk
możliwy duplikat [Jak zainicjować strukturę w ANSI C] (http://stackoverflow.com/questions/330793/how-to-initialize-a-struct-in-ansi-c) – alk