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



Teraz jest 30 sty 2025, o 21:25


Strefa czasowa: UTC + 1





Utwórz nowy wątek Odpowiedz w wątku  [ Posty: 7 ] 
Autor Wiadomość
PostNapisane: 11 sie 2013, o 18:46 
Offline
Moderator
Avatar użytkownika

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

ja myślę że to tylko chwilowa pomroczność jasna bo pewnie wiedziałeś - tylko coś się zapomniało....

No OCZYWISTĄ sprawą jest że DEKLARACJE zmiennych zwykle lądują w pliku nagłówkowym - a gdzie wg ciebie miałyby się pojawić ? ;) dlatego odnośnie

ad.1) ... oczywiście że tak ma być a nie inaczej - deklaracje w pliku nagłówkowym

ad.2) dlatego jest ta deklaracja bo ... no właśnie zmylił ciebie fakt że te zmienne istnieją już (tzn ich definicje w pliku źródłowym d_led.c) TAK ? a powiedz mi teraz - w jaki sposób mógłbyś używać cy1, cy2, cy3 i cy4 w pliku main.c ???? przecież tam nie ma ich definicji - zgadza się ? ;) no ale dzięki temu że zainkludowałeś w main.c plik d_led.h to już kompilator podczas pierwszej kompilacji gdy natrafił na nazwy cy1, cy2 itp ... wie że takie gdzieś będą bo widzi ich DEKLARACJE

to tyle - tylko tyle

ale jeśli jeszcze coś niejasne to pisz proszę ok ?

------------------------ [ Dodano po: kilkunastu sekundach ]

i nie patrz na to że w deklaracji też jest volatile - no bo musi być ;) skoro w definicji też jest.

_________________
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: 11 sie 2013, o 18:58 
Offline
Użytkownik

Dołączył(a): 04 paź 2011
Posty: 8602
Pomógł: 337

zasadniczo tak Anty

_________________
Zbuduj swój system [url=https://helion.pl/ksiazki/w-labiryncie-iot-budowanie-urzadzen-z-wykorzystaniem-ukladow-esp8266-i-esp32-andrzej-gromczynski,wlablo.htm#format/d]IOT[/url]



Góra
 Zobacz profil  
cytowanie selektywne  Cytuj  
PostNapisane: 11 sie 2013, o 19:08 
Offline
Użytkownik
Avatar użytkownika

Dołączył(a): 04 paź 2011
Posty: 43
Pomógł: 2

Pytanie wyszło z mojej strony, bo podane jest tam że extern int zmienna; informuje o typie a poniżej int zmienna; to już zajęcie 2 bajtów.



Góra
 Zobacz profil  
cytowanie selektywne  Cytuj  
PostNapisane: 11 sie 2013, o 19:39 
Offline
Moderator
Avatar użytkownika

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

Antystatyczny napisał(a):
a nazywa się to deklaracją, bo definicja już nastąpiła w pliku źródłowym d_led.c.


Nazywa się DEKLARACJĄ dlatego - że UWAGA! - NIE REZERWUJE MIEJSCA W PAMIĘCI! jest TYLKO i wyłącznie informacją dla kompilatora że taka NAZWA wystąpi gdzieś później gdy do roboty zaprzęgnięty zostanie później LINKER ... to jest podstawa. A extern jak ktoś się uprze i da w jakimś swoim innym pliku źródłowym też zadziała ... chociaż zgodnie z zasadami C deklaracje właśnie umieszczamy w plikach nagłówkowych żeby nie mieć chaosu.

------------------------ [ Dodano po: kilkunastu sekundach ]

Macck napisał(a):
bo podane jest tam że extern int zmienna; informuje o typie a poniżej int zmienna; to już zajęcie 2 bajtów.


sorki ale kompletnie tego nie rozumiem. Poczytaj co napisałem wyżej. Tak to jest.

_________________
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: 12 sie 2013, o 05:29 

Pomógł: 0

Ja sobie to tłumacze w jeszcze jeden sposób, extern stosuje wszędzie tam, gdzie zmienne mają być widoczne w pliku main.c
GwynBleidD napisał(a):
Czyli kompilator dostaje informację "nie szukaj tej zmiennej w bieżąco kompilowanym pliku, ona została w innym zdefiniowana".

To w zasadzie oddaje clue.
Drugim przykładem tego jest bodajże film gdzie Mirek pisze Sneaka, tam jest już to na wyższym poziomie abstrakcji bo jest używane rzutowanie na typ nie jawny :lol: (ależ to fajnie brzmi). Właśnie z podobnego powodu dla którego używamy "extern" by poinformować kompilator, że wiemy co robimy. Przy void, po prostu mówimy olej typ, a przy extern, słuchaj no panie kompilator (linker) ta zmienna została już zdefiniowana, a tu masz tylko informacje, co to za zmienna i jak się nazywa.

PS. Normalnie hasłem "rzutowanie na typ niejawny" można by wyrywać laski na Polibudzie :lol:
Chodź z rzutuje cię niejawnie :P.



Góra
  
cytowanie selektywne  Cytuj  
PostNapisane: 12 sie 2013, o 07:16 
Offline
Moderator
Avatar użytkownika

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

rezasurmar napisał(a):
Normalnie hasłem "rzutowanie na typ niejawny" można by wyrywać laski


eeeeeś że też jak byłem młodszy nie znałem C. :lol: Więc wszyscy młodzi wiekiem uczcie się co sił i "do roboty" :lol: ..... ileż to pożytku można mieć z takiego języka - szczególnie jak się nim dobrze włada :lol: (dżizes co ja gadam)

_________________
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: 13 sie 2013, o 07:36 

Pomógł: 0

Jednym słowem char w stringach ;)



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

Strefa czasowa: UTC + 1


Kto przegląda forum

Użytkownicy przeglądający ten dział: Brak zidentyfikowanych użytkowników i 7 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