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



Teraz jest 25 kwi 2024, o 07:13


Strefa czasowa: UTC + 1





Utwórz nowy wątek Odpowiedz w wątku  [ Posty: 9 ] 
Autor Wiadomość
PostNapisane: 12 lis 2022, o 13:21 
Offline
Nowy

Dołączył(a): 18 sty 2022
Posty: 11
Pomógł: 0

Męcze się od dłuższego czasu przy specyfikatorze extern ponieważ eclips wywala ptaszek zaraz po wpisaniu: "extern uint8_t ggcl;" i pisze: unused declaration of variable eclipse 'ggcl'

Krótki napiasy programik dla testów i w karzdym jakim napisze projekcie to samo się dzieje.

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


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


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



Góra
 Zobacz profil  
cytowanie selektywne  Cytuj  
PostNapisane: 12 lis 2022, o 18:52 
Offline
Użytkownik

Dołączył(a): 29 paź 2017
Posty: 230
Pomógł: 26

deklaracje extern uint8_t ggcl;
powinieneś umieścić w pliku test2.h

_________________
Jestem na GG 31324
Nowy soft, nowa nadzieja.



Góra
 Zobacz profil  
cytowanie selektywne  Cytuj  
PostNapisane: 12 lis 2022, o 19:03 
Offline
Użytkownik
Avatar użytkownika

Dołączył(a): 06 mar 2015
Posty: 313
Lokalizacja: Czerwionka-Leszczyny
Pomógł: 22

Po pierwsze masz 2 pliki "test2.h"
A gdzie masz plik "test2.c"?
Pokaż plik test2.c

------------------------ [ Dodano po: 2 minutach ]

JarekB napisał(a):
deklaracje extern uint8_t ggcl;
powinieneś umieścić w pliku test2.h

A dlaczego tak myślisz?

_________________
http://www.avrboss.pl



Góra
 Zobacz profil  
cytowanie selektywne  Cytuj  
PostNapisane: 12 lis 2022, o 19:47 
Offline
Moderator
Avatar użytkownika

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

Cytuj:
Krótki napiasy programik dla testów i w karzdym jakim napisze projekcie to samo się dzieje.

Ale przecież ty wszystko co można to tutaj pomieszałeś.

extern dla zmiennej to DEKLARACJA zmiennej i to daje się zwykle w plikach *.h choć czasem można dać i w *.c

a bez extern to DEFINICJA zmiennej i to daje się TYLKO i wyłącznie w plikach *.c a nie w *.h jak ty zrobiłeś - i stąd twoje problemy

_________________
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 lis 2022, o 20:43 
Offline
Nowy

Dołączył(a): 18 sty 2022
Posty: 11
Pomógł: 0

czyli mam dać do pliku test2.h

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

a w pliku main.c tylko samą zmieną.

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



Góra
 Zobacz profil  
cytowanie selektywne  Cytuj  
PostNapisane: 13 lis 2022, o 10:56 
Offline
Użytkownik

Dołączył(a): 25 lut 2022
Posty: 39
Pomógł: 6

Zmienna nie jest używana w pliku main.c i dlatego ostrzeżenie.
Usuń deklarację zmiennej ggcl z main.c. W test2.c zmień deklarację zmiennej ggcl na
static uint8_t ggcl;
oraz przenieś ją do wnętrza funkcji while_test() na początek. Plik test2.h bez zmian.



Góra
 Zobacz profil  
cytowanie selektywne  Cytuj  
PostNapisane: 13 lis 2022, o 11:11 
Offline
Moderator
Avatar użytkownika

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

ord napisał(a):
Zmienna nie jest używana w pliku main.c i dlatego ostrzeżenie.
Usuń deklarację zmiennej ggcl z main.c. W test2.c zmień deklarację zmiennej ggcl na
static uint8_t ggcl;
oraz przenieś ją do wnętrza funkcji while_test() na początek. Plik test2.h bez zmian.


kolega widzę pojęcia i nie wie czym się różni deklaracja zmiennej od definicji i przez to pewnie ta nonsensowna podpowiedź. Bo skoro autor tworzy deklarację ze specyfikatorem extern to oznacza że chce mieć ją globalną dla innych plików źródłowych *.c

W tym przypadku dodawanie specyfikatora static który wyłączy globalność w aspekcie potrzeb autora jest już totalnym nieporozumieniem

_________________
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 lis 2022, o 12:03 
Offline
Użytkownik

Dołączył(a): 25 lut 2022
Posty: 39
Pomógł: 6

Nie siedzę w jego głowie, nie wiem czego chce, odnoszę się do przedstawionego kodu.



Góra
 Zobacz profil  
cytowanie selektywne  Cytuj  
PostNapisane: 13 lis 2022, o 14:11 
Offline
Moderator
Avatar użytkownika

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

ord napisał(a):
Nie siedzę w jego głowie, nie wiem czego chce, odnoszę się do przedstawionego kodu.

ok ale wprowadzasz zamieszanie z takimi pojęciami jak DEFINICJA i DEKLARACJA zmiennych - warto jednak zapamiętać co które oznacza

_________________
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  
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 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