RTV forum PL | NewsGroups PL

Wybór między plikiem .c a .h dla tablicy wartości sinus oraz zastosowanie 'volatile' w funkcji

stałe wartości w pliku c czy h

NOWY TEMAT

elektroda NewsGroups Forum Index - Elektronika Polska - Wybór między plikiem .c a .h dla tablicy wartości sinus oraz zastosowanie 'volatile' w funkcji

slawek7
Guest

Sun Apr 22, 2012 9:59 am   



Cześć.
Proszę powiedzcie mi czy jak mam tablicę np z wartościami funkcji
sinus to te wartości powinienem umieścić w pliku .c czy .h (czy w
pliku sin.c czy w pliku sin.h)? Jaka jest różnica jak umieszczę w
jednym a w drugim?
W kursie w EdW STM32 wartości umieszczono w sin.c natomiast w kursie
AVR takie dane były w plikach .h

Przy okazji, spotkałem się z definicją funkcji która miała taki zapis.
volatile unsigned char FUNKCJA(.....) {...}

Chodzi mi o użycie volatile w funkcji a nie w zmiennej. Po co i
dlaczego?

Grzegorz Niemirowski
Guest

Sun Apr 22, 2012 11:59 am   



slawek7 <sholojda@wp.pl> napisał(a):
Quote:
Cześć.
Proszę powiedzcie mi czy jak mam tablicę np z wartościami funkcji
sinus to te wartości powinienem umieścić w pliku .c czy .h (czy w
pliku sin.c czy w pliku sin.h)? Jaka jest różnica jak umieszczę w
jednym a w drugim?
W kursie w EdW STM32 wartości umieszczono w sin.c natomiast w kursie
AVR takie dane były w plikach .h

Odpowiedz sobie na pytanie, po co Ci w ogóle pliki .h. Jeśli masz plik. h.
includowany tylko przez jeden plik .c to nie ma znaczenia, czy deklaracje
zawarte w pliku .h będą w nim, czy w pliku .c. Pliki .h stosujemy, gdy
chcemy funkcje z pliku .c udostępnić na zewnątrz. Wtedy inny plik .c może
sobie includować taki plik .h żeby dostać deklaracje funkcji zdefiniowanych
w tamtym pierwszym .c

--
Grzegorz Niemirowski
http://www.grzegorz.net/
OE PowerTool i Outlook Express: http://www.grzegorz.net/oe/
Uptime: 0 days, 0 hours, 47 minutes and 10 seconds

identifikator: 20040501
Guest

Sun Apr 22, 2012 5:36 pm   



Masz racje. Problem w tym ze informacji na temat jak poprawnie budowac
program na uC nie ma, przy najmniej ja nie znam.
Jeśli wiesz gdzie mozna o tym poczytacto bede wdzieczny

przecież jest elektroda...

Grzegorz Niemirowski
Guest

Sun Apr 22, 2012 5:37 pm   



slawek7 <sholojda@wp.pl> napisał(a):
Quote:
Masz racje. Problem w tym ze informacji na temat jak poprawnie budowac
program na uC nie ma, przy najmniej ja nie znam.
Jeśli wiesz gdzie mozna o tym poczytacto bede wdzieczny

Problem, który poruszyłeś nie jest specyficzny dla uC. Jest to jedna z
podstawowych rzeczy w C ogólnie i możesz o tym poczytać w dowolnej
książce/kursie na temat C. Nie ma tu z resztą jakiejś wielkiej filozofii.
To, na co ewentualnie należy zwrócić uwagę, to czy przypadkiem jeden plik
nie jest includowany kilka razy i nie ma błędu redefinicji. Stosuje się
wtedy konstrukcje typu #ifndef żeby sprawdzić, czy dane makro nie było już
definiowane.

Co do volatile to nie wiem, nie spotkałem się z tym w kontekście funkcji.
Google zwraca niewiele i to w stosunku do metod klas a nie samodzielnych
funkcji. Podejrzewam, że to akurat może być coś specyficznego dla uC.

--
Grzegorz Niemirowski
http://www.grzegorz.net/
OE PowerTool i Outlook Express: http://www.grzegorz.net/oe/
Uptime: 0 days, 6 hours, 37 minutes and 27 seconds

Michoo
Guest

Sun Apr 22, 2012 5:52 pm   



On 22.04.2012 09:59, slawek7 wrote:
Quote:
Cześć.
Proszę powiedzcie mi czy jak mam tablicę np z wartościami funkcji
sinus to te wartości powinienem umieścić w pliku .c czy .h (czy w
pliku sin.c czy w pliku sin.h)? Jaka jest różnica jak umieszczę w
jednym a w drugim?
W kursie w EdW STM32 wartości umieszczono w sin.c natomiast w kursie
AVR takie dane były w plikach .h
Rozszerzenie to tylko konwencja, ALE w standardowym podejściu jeżeli

zdefiniujesz zmienne w pliku nagłówkowym to będą one powielone dla
każdego pliku .c który go dołączy. Jeżeli zdefiniujesz w .h jako extern
a potem zdefiniujesz w .c to w wyniku będzie tylko raz.
Quote:

Przy okazji, spotkałem się z definicją funkcji która miała taki zapis.
volatile unsigned char FUNKCJA(.....) {...}

Chodzi mi o użycie volatile w funkcji a nie w zmiennej. Po co i
dlaczego?
Afaik volatile odnosi się do typu zwracanego (unsigned char) a nie do

funkcji i jest w tym kontekście bez sensu.


--
Pozdrawiam
Michoo

kk
Guest

Sun Apr 22, 2012 6:26 pm   



Quote:
Co do volatile to nie wiem, nie spotkałem się z tym w kontekście funkcji.
Google zwraca niewiele i to w stosunku do metod klas a nie samodzielnych
funkcji. Podejrzewam, że to akurat może być coś specyficznego dla uC.


The volatile statement tells the compiler that the variable is constantly
changing.

Chodzi o optymalizację kodu przez kompilator.
Zapobiega przenoszeniu kopii zmiennej do rejestru i wykonywaniu dalszych
operacji na kopii.
Potrzene np przy obsłudze przerwań.

slawek7
Guest

Sun Apr 22, 2012 7:26 pm   



Masz racje. Problem w tym ze informacji na temat jak poprawnie budowac
program na uC nie ma, przy najmniej ja nie znam.
Jeśli wiesz gdzie mozna o tym poczytacto bede wdzieczny

Grzegorz Niemirowski
Guest

Sun Apr 22, 2012 9:18 pm   



kk <a@a.pl> napisał(a):
Quote:
The volatile statement tells the compiler that the variable is constantly
changing.
Chodzi o optymalizację kodu przez kompilator.
Zapobiega przenoszeniu kopii zmiennej do rejestru i wykonywaniu dalszych
operacji na kopii.
Potrzene np przy obsłudze przerwań.

To ja wiem i stosuję, chodziło o volatile w kontekście typu funkcji.

--
Grzegorz Niemirowski
http://www.grzegorz.net/
OE PowerTool i Outlook Express: http://www.grzegorz.net/oe/
Uptime: 0 days, 10 hours, 23 minutes and 43 seconds

slawek7
Guest

Mon Apr 23, 2012 12:58 pm   



Odppowiadając temu kto twierdzi ze zrodlwem wiedzy moze byc elektroda.
To jakies nieporozumine. Sa tam super ludzie ktorzy potrafia zrozumiec
poczatkujacego ale w kazdym dziale jest moderator ktory sami wiecie co
robi albo pojawiaja sie inni uzykownicy.
Potem jak sie zapytasz to az krew zalewa czytajac niektore nie na
temat odpowiedzi

Grzegorz Niemirowski
Guest

Mon Apr 23, 2012 3:05 pm   



slawek7 <sholojda@wp.pl> napisał(a):
Quote:
Odppowiadając temu kto twierdzi ze zrodlwem wiedzy moze byc elektroda.

Odpowiadasz mi, czy to znaczy, że ja kiedyś tak stwierdziłem?

Quote:
To jakies nieporozumine. Sa tam super ludzie ktorzy potrafia zrozumiec
poczatkujacego ale w kazdym dziale jest moderator ktory sami wiecie co
robi albo pojawiaja sie inni uzykownicy.
Potem jak sie zapytasz to az krew zalewa czytajac niektore nie na
temat odpowiedzi

Do mnie się nikt nie czepiał a odpowiedzi dostawałem, ale ja się mało tam
udzielam. W każdym razie nie wiem po co piszesz o tym w tym wątku, on nie
jest o Elektrodzie.

--
Grzegorz Niemirowski
http://www.grzegorz.net/
OE PowerTool i Outlook Express: http://www.grzegorz.net/oe/
Uptime: 0 days, 0 hours, 9 minutes and 11 seconds

kk
Guest

Mon Apr 23, 2012 3:48 pm   



Quote:
chodziło o volatile w kontekście typu funkcji.

fakt ..
może tu coś jest :
http://publications.gbdirect.co.uk/c_book/chapter8/const_and_volatile.html

Przykład deklaracji w funkcji jest, ale wyjaśnienia konkretnego przypadku
nie widzę.

kk
Guest

Mon Apr 23, 2012 3:58 pm   



No i znowu lipa. Za szybko wkleiłem link.
Nie ma tam odpowiedzi na zadane pytanie.

slawek7
Guest

Mon Apr 23, 2012 7:27 pm   



On 23 Kwi, 17:58, "kk" <a...@a.pl> wrote:
Quote:
No i znowu lipa. Za szybko wkleiłem link.
Nie ma tam odpowiedzi na zadane pytanie.

Ale sami przyznacie że uzycie volatile do funkcji jest "dziwne"
Znalazlem to w tym programie mp3 pleyer:
http://stm32.eu/index.php?option=com_attachments&task=download&id=96

elektroda NewsGroups Forum Index - Elektronika Polska - Wybór między plikiem .c a .h dla tablicy wartości sinus oraz zastosowanie 'volatile' w funkcji

NOWY TEMAT

Regulamin - Zasady uzytkowania Polityka prywatnosci Kontakt RTV map News map