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



Teraz jest 12 lis 2024, o 18:38


Strefa czasowa: UTC + 1





Utwórz nowy wątek Odpowiedz w wątku  [ Posty: 5 ] 
Autor Wiadomość
PostNapisane: 1 mar 2017, o 11:25 
Offline
Użytkownik
Avatar użytkownika

Dołączył(a): 20 paź 2013
Posty: 143
Lokalizacja: Zamość
Pomógł: 0

Witam.

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

która jako argumenty przyjmie dwie tablice pierwsza to tablica t1 z wartościami, które chciałbym wpisać do EEPROMU, druga to t2 z wartosciami odczytanymi z EEPROMU
Program składa się z 3 plików: main.c, funklcje.h oraz funkcje.c)

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


to jest plik funkcje.h:

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


a to main.c:

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


przy kompilacji mam taki błąd:
"Section attribute can not be specified for local variables".
Ktoś ma pomysł jak się z tym uporać?



Góra
 Zobacz profil  
cytowanie selektywne  Cytuj  
PostNapisane: 1 mar 2017, o 11:42 
Offline
Nowy

Dołączył(a): 12 lut 2014
Posty: 10
Pomógł: 1

Nie jestem pewny ale wydaje mi sie że do funkcji nie można przekazywać tablic. Można przekazać wskaźnik do tablicy i na tym operować.



Góra
 Zobacz profil  
cytowanie selektywne  Cytuj  
PostNapisane: 1 mar 2017, o 11:44 
Offline
Użytkownik
Avatar użytkownika

Dołączył(a): 15 lut 2017
Posty: 368
Lokalizacja: Gliwice
Pomógł: 34

Prawdopodobnie chodzi tu o rozwinięcie makra EEMEM:
#define EEMEM __attribute__((section(".eeprom")))

Tak jak podaje Ci kompilator takiej deklaracji nie można robić jako zmienne lokalnej.

Przesuń definicje typu strukturalnego np do pliku nagłówkowego, a zmienną adres_eeprom zadeklaruj jako globalną.
Ja bym zrobił to tak:
Składnia: [ Pobierz ] [ Ukryj ]
język c
Musisz się zalogować, aby zobaczyć kod źródłowy. Tylko zalogowani użytkownicy mogą widzieć kod.


Autor postu otrzymał pochwałę


Góra
 Zobacz profil  
cytowanie selektywne  Cytuj  
PostNapisane: 1 mar 2017, o 12:11 
Offline
Użytkownik
Avatar użytkownika

Dołączył(a): 20 paź 2013
Posty: 143
Lokalizacja: Zamość
Pomógł: 0

Super. Dziękuję. Działa :)



Góra
 Zobacz profil  
cytowanie selektywne  Cytuj  
PostNapisane: 1 mar 2017, o 12:50 
Offline
Użytkownik
Avatar użytkownika

Dołączył(a): 15 lut 2017
Posty: 368
Lokalizacja: Gliwice
Pomógł: 34

xisco24 napisał(a):
Nie jestem pewny ale wydaje mi sie że do funkcji nie można przekazywać tablic. Można przekazać wskaźnik do tablicy i na tym operować.

Zawsze można jeszcze przekazać rozmiar tablicy i sumarycznie przekazana będzie tablica :)
W niniejszym przykładzie jednak nie następuje przekazywanie tablicy tylko wskaźnika.
Deklaracja "char t1[]" to nic innego jak przekazanie wskaźnika i jest równoważne z "char * t1" oraz "char t1[10]"
Potwierdzenie tej tezy można znaleźć np tutaj:
http://cpp0x.pl/kursy/Kurs-C++/Poziom-2 ... unkcji/324



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: 5 ] 

Strefa czasowa: UTC + 1


Kto przegląda forum

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


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