Kanał - ATNEL tech-forum
Wszystkie działy
Najnowsze wątki



Teraz jest 23 lut 2025, o 08:49


Strefa czasowa: UTC + 1





Utwórz nowy wątek Odpowiedz w wątku  [ Posty: 9 ] 
Autor Wiadomość
PostNapisane: 9 wrz 2015, o 19:29 
Offline
Użytkownik
Avatar użytkownika

Dołączył(a): 17 kwi 2012
Posty: 195
Pomógł: 0

Witam mam pytanie... chciałbym umieścić typ strukturalny w oddzielnym pliku key.c i tam przypisac wartości jednakże nie mogę korzystać z niego w main gdy robię to w taki sposób:


key.c
Składnia: [ Pobierz ] [ Ukryj ]
język c
Musisz się zalogować, aby zobaczyć kod źródłowy. Tylko zalogowani użytkownicy mogą widzieć kod.


key.h

Składnia: [ Pobierz ] [ Ukryj ]
język c
Musisz się zalogować, aby zobaczyć kod źródłowy. Tylko zalogowani użytkownicy mogą widzieć kod.


nie rozumiem dlaczego program wypluwa błąd przecież button jest zmienną strukturalną i chcę by była widoczna w pliku głównym main

Z góry dziękuję za pomoc



Góra
 Zobacz profil  
cytowanie selektywne  Cytuj  
PostNapisane: 9 wrz 2015, o 19:35 
Offline
Użytkownik

Dołączył(a): 25 mar 2015
Posty: 105
Pomógł: 2

Tak na pierwszy rzut oka powinno być extern TBUTTON button.
Bo TBUTTON to typ zmiennej a button to Twoja nazwa zmiennej.
Dla przykładu gdy masz zmienną:
Składnia: [ Pobierz ] [ Ukryj ]
język c
Musisz się zalogować, aby zobaczyć kod źródłowy. Tylko zalogowani użytkownicy mogą widzieć kod.

to taka zmienna extern wygląda tak:
Składnia: [ Pobierz ] [ Ukryj ]
język c
Musisz się zalogować, aby zobaczyć kod źródłowy. Tylko zalogowani użytkownicy mogą widzieć kod.

Ogółem troszkę inaczej rozmieściłbym to.
Cały kod który masz wrzuciłbym do pliku z rozszerzeniem .h i nie bawił się w extern.

W moim odczuciu lepiej byłoby zrobić to tak, żeby nie mieszać deklaracji funkcji z jej definicjami. Deklaracje funkcji (w tym także np Twojej struktury) umieszcza się w pliku .h. Definicje umieszcza sie w pliku .c.
Składnia: [ Pobierz ] [ Ukryj ]
język c
Musisz się zalogować, aby zobaczyć kod źródłowy. Tylko zalogowani użytkownicy mogą widzieć kod.


Pozdrawiam ;)


Autor postu otrzymał pochwałę


Ostatnio edytowano 9 wrz 2015, o 19:43 przez Czapek, łącznie edytowano 1 raz

Góra
 Zobacz profil  
cytowanie selektywne  Cytuj  
PostNapisane: 9 wrz 2015, o 19:39 
Offline
Użytkownik
Avatar użytkownika

Dołączył(a): 17 kwi 2012
Posty: 195
Pomógł: 0

Cytuj:
extern int zmienna
no niestety tak już tez próbowałem i niestety lipa


wypluwa mi program error

Składnia: [ Pobierz ] [ Ukryj ]
język c
Musisz się zalogować, aby zobaczyć kod źródłowy. Tylko zalogowani użytkownicy mogą widzieć kod.



Góra
 Zobacz profil  
cytowanie selektywne  Cytuj  
PostNapisane: 9 wrz 2015, o 19:47 
Offline
Użytkownik

Dołączył(a): 25 mar 2015
Posty: 105
Pomógł: 2

Podeślesz cały program? Wrzucę do kompilatora i sprawdzę.



Góra
 Zobacz profil  
cytowanie selektywne  Cytuj  
PostNapisane: 9 wrz 2015, o 19:52 
Offline
Użytkownik
Avatar użytkownika

Dołączył(a): 17 kwi 2012
Posty: 195
Pomógł: 0

a mam pytanie jeszcze jedno jak np. zdefiniuję sobie zmienne
Składnia: [ Pobierz ] [ Ukryj ]
język c
Musisz się zalogować, aby zobaczyć kod źródłowy. Tylko zalogowani użytkownicy mogą widzieć kod.

to gdzie mogę przypisać im wartości poza plikiem głównym main ?



Góra
 Zobacz profil  
cytowanie selektywne  Cytuj  
PostNapisane: 9 wrz 2015, o 19:58 
Offline
Użytkownik

Dołączył(a): 25 mar 2015
Posty: 105
Pomógł: 2

kidcowboy napisał(a):
to gdzie mogę przypisać im wartości poza plikiem głównym main ?

W plikach nagłówkowych z rozszerzeniem .c.

Dobrym przyzwyczajeniem jest podział programu na pliki w taki sposób, aby obsługę różnych elementów zapisujesz w różnych parach plików.
Mam na myśli, że jeśli masz np. obsługę klawiszy to tworzysz dla nich dwa pliki:
z rozszerzeniem .h - tam DEKLARUJESZ funkcje.
z rozszerzeniem .c - tam DEFINIUJESZ funkcje.
Czyli np
key.c oraz key.h ;)
W main.c natomiast załączasz TYLKO nagłówki .h oraz w pętli głównej wywołujesz kolejne funkcje wedle tego, w jaki sposób ma działać Twój program.



Góra
 Zobacz profil  
cytowanie selektywne  Cytuj  
PostNapisane: 9 wrz 2015, o 20:03 
Offline
Użytkownik
Avatar użytkownika

Dołączył(a): 17 kwi 2012
Posty: 195
Pomógł: 0

No niby to wszystko wiem ale jak przychodzi co do czego to lipa. zrobiłem tak jak podpowiedziałeś i mogę w pliku głownym przypisać wartości zdefiniowane w pliku key.h ale ja bym wolał żeby były w pliku key.c - i tu pojawia się kolejny problem - sorry że truje



Góra
 Zobacz profil  
cytowanie selektywne  Cytuj  
PostNapisane: 9 wrz 2015, o 20:04 
Offline
Moderator
Avatar użytkownika

Dołączył(a): 03 paź 2011
Posty: 27359
Lokalizacja: Szczecin
Pomógł: 1042

Panie

1. TYP strukturalny definiujesz w pliku *.h
2. w pliku *.c definiujesz zmienną tego typu
3. i wtedy wracasz do pliku *.h i tam robisz deklarację tej zmiennej czyli dodajesz extern

i wtedy po zainkludowaniu pliku *.h wszystko ci działa

_________________
zapraszam na blog: http://www.mirekk36.blogspot.com (mój nick Skype: mirekk36 ) [ obejrzyj Kurs EAGLE ] [ mój kanał YT TV www.youtube.com/mirekk36 ]



Góra
 Zobacz profil  
cytowanie selektywne  Cytuj  
PostNapisane: 9 wrz 2015, o 20:12 
Offline
Użytkownik
Avatar użytkownika

Dołączył(a): 17 kwi 2012
Posty: 195
Pomógł: 0

Panie Mirku dziękuję :)



Góra
 Zobacz profil  
cytowanie selektywne  Cytuj  
Wyświetl posty nie starsze niż:  Sortuj wg  
Utwórz nowy wątek Odpowiedz w wątku  [ Posty: 9 ] 

Strefa czasowa: UTC + 1


Kto przegląda forum

Użytkownicy przeglądający ten dział: Brak zidentyfikowanych użytkowników i 4 gości


Nie możesz rozpoczynać nowych wątków
Nie możesz odpowiadać w wątkach
Nie możesz edytować swoich postów
Nie możesz usuwać swoich postów
Nie możesz dodawać załączników

Szukaj:
Skocz do:  
Sitemap
Technologię dostarcza phpBB® Forum Software © phpBB Group phpBB3.PL
phpBB SEO