"Deklaracja", "definicja" te pojęcia często się mieszają chociaż ich znaczenie jest istotnie różne. Sam trochę zamieszałem więc może zacznijmy od początku.
Deklaracja struktury to opis co tam się wewnątrz znajduje:
język c
Musisz się zalogować, aby zobaczyć kod źródłowy. Tylko zalogowani użytkownicy mogą widzieć kod.
Definicja struktury to powołanie do istnienia zmiennej strukturalnej:
język c
Musisz się zalogować, aby zobaczyć kod źródłowy. Tylko zalogowani użytkownicy mogą widzieć kod.
Można to połączyć i jednocześnie strukturę zadeklarować i zdefiniować:
język c
Musisz się zalogować, aby zobaczyć kod źródłowy. Tylko zalogowani użytkownicy mogą widzieć kod.
I teraz wracając do twoich zmagań - nie możesz inicjować struktury w deklaracji, możesz inicjować przy definicji. A więc to nie jest prawidłowe:
język c
Musisz się zalogować, aby zobaczyć kod źródłowy. Tylko zalogowani użytkownicy mogą widzieć kod.
ani to:
język c
Musisz się zalogować, aby zobaczyć kod źródłowy. Tylko zalogowani użytkownicy mogą widzieć kod.
prawidłowe jest to:
język c
Musisz się zalogować, aby zobaczyć kod źródłowy. Tylko zalogowani użytkownicy mogą widzieć kod.
albo to:
język c
Musisz się zalogować, aby zobaczyć kod źródłowy. Tylko zalogowani użytkownicy mogą widzieć kod.
Modyfikatory 'const' czy 'typedef' nie wnoszą nic nowego do tej zasady. Jedynie w razie zadeklarowania (albo zdefiniowania) całej (lub części) struktury jako const kompilator sprawdza czy w kodzie nie ma przypisań do zmiennej (za wyjątkiem inicjalizacji oczywiście).
To tyle. A teraz powiedz co włąściwie chcesz uzyskać?