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



Teraz jest 29 lis 2024, o 10:36


Strefa czasowa: UTC + 1





Utwórz nowy wątek Odpowiedz w wątku  [ Posty: 6 ] 
Autor Wiadomość
PostNapisane: 4 lis 2013, o 23:04 
Offline
Użytkownik
Avatar użytkownika

Dołączył(a): 06 paź 2011
Posty: 108
Pomógł: 0

hmm, w pliku main.c mam taką strukturę:

Kod:
typedef struct {
   uint8_t temp1;
   uint8_t temp2;
   uint8_t min1;
   uint8_t min2;
   uint8_t hist;
}ST;


oczywiście przepisałem je do ramu

Kod:
//ST eep_dane EEMEM;
//ST ram_dane;


Dwie z tych zmiennych muszę zmieniać w funkcjach znajdujących się w innym pliku projektu. W tej chwili realizuję to przez zmienne pomocnicze, jednak wolałbym operować bezpośrednio na np. ram_dane.hist. Jak to zrobić ?

_________________
sig off ;(



Góra
 Zobacz profil  
cytowanie selektywne  Cytuj  
PostNapisane: 5 lis 2013, o 00:20 
Offline
Użytkownik
Avatar użytkownika

Dołączył(a): 05 sty 2013
Posty: 272
Pomógł: 3

A gdzie je definiujesz? Bo jeżeli są globalne to powinieneś mieć dostęp.

_________________
sig off ;(



Góra
 Zobacz profil  
cytowanie selektywne  Cytuj  
PostNapisane: 5 lis 2013, o 08:38 
Offline
Użytkownik
Avatar użytkownika

Dołączył(a): 06 paź 2011
Posty: 108
Pomógł: 0

jak umieszczam całość czyli:

Kod:
typedef struct {
   uint8_t temp1;
   uint8_t temp2;
   uint8_t min1;
   uint8_t min2;
   uint8_t hist;
}ST;

ST eep_dane EEMEM;
ST ram_dane;


w pliku nagłówkowym , to kompilator zgłasza błąd:

" multiple definition of `eep_dane'"

_________________
sig off ;(



Góra
 Zobacz profil  
cytowanie selektywne  Cytuj  
PostNapisane: 5 lis 2013, o 10:32 
Offline
Moderator
Avatar użytkownika

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

ixxl napisał(a):
w pliku nagłówkowym , to kompilator zgłasza błąd:

" multiple definition of `eep_dane'"


A czytałeś w Bluebooku co to jest DEFINICJA a co to jest DEKLARACJA zmiennych ? Bo to od razu rozwiązałoby ci sprawę ...

Tak samo o podziale projektu na pliki - tym bardziej że masz tam ładną tabelkę i pokazane jak to robić...

Bez zrozumienia różnicy co to deklaracja a co to definicja zmiennych wciąż będziesz miał z tym 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: 5 lis 2013, o 19:05 
Offline
Użytkownik
Avatar użytkownika

Dołączył(a): 06 paź 2011
Posty: 108
Pomógł: 0

Mirku, oczywiście (albo wydaje mi się) wiem co to jest deklaracja i definicja. Ze zwykłymi zmiennymi nie mam problemu. Jednak pierwszy raz zmierzyłem się na poważnie ze strukturami i się zgubiłem :(

z tego co rozumiem , to

Kod:
typedef struct {
   uint8_t temp1;
   uint8_t temp2;
   uint8_t min1;
   uint8_t min2;
   uint8_t hist;
}ST;


jest definicja typu strukturalnego , natomiast

Kod:
ST eep_dane EEMEM;
ST ram_dane;


deklaracja zmiennych ?

_________________
sig off ;(



Góra
 Zobacz profil  
cytowanie selektywne  Cytuj  
PostNapisane: 6 lis 2013, o 01:35 
Offline
Moderator
Avatar użytkownika

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

ixxl napisał(a):
Kod:
ST eep_dane EEMEM;
ST ram_dane;


deklaracja zmiennych ?


no widzisz ;) ... nie nie nie .... to jest panie DEFINICJA zmiennych .... toż definiujesz je w pliku *.c (źródłowym) i od razu kompilator rezerwuje pamięć

więc przypomnij sobie jednak z bluebooka bo jak widzisz miałem rację że będzie się to ciągnąć za tobą ....

tak jak mówi kolega wyżej

a gdy dasz to w pliku nagłówkowym ale ze specyfikatorem extern to dopiero będzie DEKLARACJA bo wtedy kompilator nie rezerwuje pamięci na te zmienne tylko rozgłasza ich nazwy w innych modułach gdy się inkluduje plik *.h

czyli:

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


w tym samym pliku nagłówkowym oczywiście umieść swoją definicję typu ST (chociaż nazwa typu dwu-literowa to też mega porażka) ale dasz dłuższą i coś mówiącą nazwę i będzie ok ;)

_________________
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: 6 ] 

Strefa czasowa: UTC + 1


Kto przegląda forum

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