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



Teraz jest 24 kwi 2024, o 18:11


Strefa czasowa: UTC + 1





Utwórz nowy wątek Odpowiedz w wątku  [ Posty: 24 ] 
Autor Wiadomość
PostNapisane: 30 wrz 2016, o 08:31 
Offline
Użytkownik

Dołączył(a): 04 paź 2013
Posty: 36
Pomógł: 0

Siemka wszystkim. Mianowicie w pliku nagłówkowym zadeklarowałem funkcje której argumenty są typu uint8_t i wyskakuje mi taki błąd. Dodam, że w pliku .c też użyłem tej nazwy i tam jest wszystko ok. Może ktoś wie o co chodzi?



Góra
 Zobacz profil  
cytowanie selektywne  Cytuj  
PostNapisane: 30 wrz 2016, o 08:32 
Offline
Moderator
Avatar użytkownika

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

Zrobiłeś babola w kodzie i to nie to że się domyślam - wiem to na 100% .... ale wiesz bez widoku tego kodu to już trzeba byłoby mieć co najmniej 3-kanałową szklaną kulę rasowej wróżki żeby podpowiedzieć ci gdzie zrobiłeś tego babola.

_________________
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: 30 wrz 2016, o 08:53 
Offline
Użytkownik

Dołączył(a): 04 paź 2013
Posty: 36
Pomógł: 0

Panie Mirku, nie wiem jak duży fragment kodu pomoże zdiagnozować problem. Mianowicie staram się samemu napisać sterownik do LCD zgodnie z instrukcjami zawartymi w blue booku. Normalnie jeśli coś nie banglało to zaglądałem w kod z CD i wszystko było ok. Problem który napotkałem teraz pojawił się już na samym końcu, kiedy chciałem dodać funkcję lcd_locate() do pliku nagłówkowego:
lcd44780.c:
Kod:
#if USE_LCD_LOCATE == 1
// funkcja pozycjonowania kursora; dostosowuje automatycznie adresy DDRAM w zaleznosci od rodzaju wyswietlacza (ile ma wierszy)
void lcd_locate(uint8_t y, uint8_t x)
{
   switch(y)
      {
   case 0: y = LCD_LINE1; break;
#if (LCD_Y > 1)
   case 1: y = LCD_LINE2; break;
#endif
# if (LCD_Y > 2)
   case 2: y = LCD_LINE3; break;
#endif
#if (LCD_Y > 3)
   case 3: y = LCD_LINE4; break;
#endif
      }
   lcd_write_cmd(0x80 + y + x);
}
#endif

lcd44780.h:
Kod:
void lcd_locate(uint8_t y, uint8_t x);

Nie wiem czy te fragmenty wystarczą ?



Góra
 Zobacz profil  
cytowanie selektywne  Cytuj  
PostNapisane: 30 wrz 2016, o 09:01 
Offline
Moderator
Avatar użytkownika

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

delma199 napisał(a):
Mianowicie staram się samemu napisać sterownik do LCD zgodnie z instrukcjami zawartymi w blue booku

Bardzo fajny cel ... warto przynajmniej popróbować - to mocno podnosi własny skill ;)

Wracając do twojego problemu - to zrozum, że błąd w takim wypadku i na moje oko wcale nie jest w tej linijce o której myślisz niestety ... gdzieś musiałeś (strzelam) zapomnieć średnika, dodać za dużo jeden nawias klamrowy albo za mało, itp itd ... a to potrafi spowodować takie efekty o jakich piszesz

cofaj się w tym co robiłeś ... sprawdzaj kiedy zacznie być dobrze ;) bo pewnie wzrokowo ciężko wyłapać ... ale też w konsoli popatrz szerzej na błędy na numery linii itp itd

_________________
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: 30 wrz 2016, o 09:29 
Offline
Użytkownik

Dołączył(a): 07 cze 2016
Posty: 563
Pomógł: 143

Przepraszam, że się wtrącam ;)

delma199 napisał(a):
Mianowicie w pliku nagłówkowym zadeklarowałem funkcje której argumenty są typu uint8_t i wyskakuje mi taki błąd. Dodam, że w pliku .c też użyłem tej nazwy i tam jest wszystko ok.

Problem który napotkałem teraz pojawił się już na samym końcu, kiedy chciałem dodać funkcję lcd_locate() do pliku nagłówkowego

Miałbym następujące pytania:

Czy w pliku "lcd44780.c" masz dyrektywę:
#include <avr/ioh> ?

Czy w pliku "lcd44780.h" masz dyrektywę:
#include <avr/ioh>
lub przynajmniej
#include <stdint.h> ?



Góra
 Zobacz profil  
cytowanie selektywne  Cytuj  
PostNapisane: 30 wrz 2016, o 10:44 
Offline
Moderator
Avatar użytkownika

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

andrews napisał(a):
Czy w pliku "lcd44780.h" masz dyrektywę:
#include <avr/ioh>
lub przynajmniej
#include <stdint.h> ?


Ale mi się wydaje, że w plikach nagłówkowych na potrzeby samych deklaracji funkcji nie trzeba inkludować tych plików ... chyba że są użyte jakieś nazwy które nie są używane w źródłowym ...

_________________
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: 30 wrz 2016, o 11:36 
Offline
Użytkownik

Dołączył(a): 06 wrz 2016
Posty: 35
Zbananowany użytkownik

Pomógł: 0

Witam

Mam zdaje się identyczny problem, z tym że ja przerabiam poradniki od magic ledów. Utknąłem na 4 części w 39:42 https://youtu.be/xujEupk1s-E?t=39m42s , gdzie Mirek przypomina, żeby wrzucić funkcje do pliku nagłówkowego, o czym ja oczywiście zapomniałem. Ale bez tego program się kompilował (z warnigiem) ale działał, a po wrzuceniu funkcji do pliku nagłówkowego program się już nie kompiluje. Wyskakuje błąd:

Kod:
12:29:54 **** Incremental Build of configuration Release for project WS2812_TEST ****
make all
Building file: ../WS2812/ws2812.c
Invoking: AVR Compiler
avr-gcc -Wall -Os -fpack-struct -fshort-enums -ffunction-sections -fdata-sections -std=gnu99 -funsigned-char -funsigned-bitfields -mmcu=atmega32 -DF_CPU=16000000UL -MMD -MP -MF"WS2812/ws2812.d" -MT"WS2812/ws2812.o" -c -o "WS2812/ws2812.o" "../WS2812/ws2812.c"
In file included from ../WS2812/ws2812.c:9:0:
../WS2812/ws2812.h:17:16: error: unknown type name 'uint8_t'
 void send_rgb( uint8_t r, uint8_t g, uint8_t b);
                ^
../WS2812/ws2812.h:17:27: error: unknown type name 'uint8_t'
 void send_rgb( uint8_t r, uint8_t g, uint8_t b);
                           ^
../WS2812/ws2812.h:17:38: error: unknown type name 'uint8_t'
 void send_rgb( uint8_t r, uint8_t g, uint8_t b);
                                      ^
../WS2812/ws2812.h:18:18: error: unknown type name 'uint32_t'
 void send_color( uint32_t c);
                  ^
make: *** [WS2812/ws2812.o] Błąd 1

12:29:54 Build Finished (took 688ms)

Pewnie popełniłem jakiegoś babola, którego nie widzę pomimo wielokrotnego sprawdzenia, kod wydaje się być taki jak w poradniku.

Mój kod:

ws2812.c

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


ws2812.h

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



Góra
 Zobacz profil  
cytowanie selektywne  Cytuj  
PostNapisane: 30 wrz 2016, o 11:48 
Offline
Moderator
Avatar użytkownika

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

Cytuj:
#include "ws2812.h"

#include <avr/io.h>


No i popatrz ;) a mówisz - że robisz wszystko wg poradników ? ;) tymczasem na 100% to nie jest wg poradnika a podejrzewam, że być może nie masz nawet Bluebooka i dlatego tak ciężko ci to idzie .... Bo przepisujesz nie do końca rozumiejąc o co chodzi ....

Tymczasem w Bluebooku jest to i mnóstwo innych rzeczy ładnie wyjaśnione

wracając do problemu - no sam żesz pan pomyśl

NAJPIERW inlkuldujesz w pliku *.c

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



preprocesor rozwija to w tym pliku DOKŁADNIE w tym miejscu i tak próbuje kompilować - więc SKĄD ma wiedzieć, co to jest uint8_t jeśli takiego babola robisz, że plik

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


inkludujesz później ? .... mówię ci obejrzyj sobie ten jeden z ostatnich poradników , jeśli nie masz jeszcze Bluebooka



bo jak tego nie zrozumiesz tylko znowu napiszesz bo ja tak ci powiedziałem to za chwilę będziesz w innych miejscach robił podobne albo i gorsze błędy

W Bluebooku zwracam na to wszystko SZCZEGÓLNĄ uwagę w tym na poprawny styl pisania kodu - który jak widać na tym akurat przykładzie (tzn złym przykładzie) .... jest TAK WAŻNY ...

A tymczasem popraw i zobaczysz CUD ;) będzie działać

_________________
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: 30 wrz 2016, o 12:00 
Offline
Użytkownik

Dołączył(a): 06 wrz 2016
Posty: 35
Zbananowany użytkownik

Pomógł: 0

OK, dziękuję za wyjaśnienie, teraz jest wszystko OK.



Góra
 Zobacz profil  
cytowanie selektywne  Cytuj  
PostNapisane: 30 wrz 2016, o 13:09 
Offline
Użytkownik

Dołączył(a): 07 cze 2016
Posty: 563
Pomógł: 143

mirekk36 napisał(a):
Ale mi się wydaje, że w plikach nagłówkowych na potrzeby samych deklaracji funkcji nie trzeba inkludować tych plików ... chyba że są użyte jakieś nazwy które nie są używane w źródłowym ...

No tak, tylko że to zależy od kolejności inkludowania (jak widać nie zawsze ta kolejność jest prawidłowa u początkujących). Jak się zainkluduje np. io.h na początku pliku nagłówkowego zamiast w pliku .c to nie będzie tego problemu ;)



Góra
 Zobacz profil  
cytowanie selektywne  Cytuj  
PostNapisane: 30 wrz 2016, o 13:12 
Offline
Moderator
Avatar użytkownika

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

andrews napisał(a):
No tak, tylko że to zależy od kolejności inkludowania (jak widać nie zawsze ta kolejność jest prawidłowa u początkujących). Jak się zainkluduje np. io.h na początku pliku nagłówkowego zamiast w pliku .c to nie będzie tego problemu


DOKŁADNIE i o tym wyżej napisałem - ale ja wolę podpowiadać z kolei tzw DOBRY STYL programowania do którego zalicza się również prawidłowa kolejność inkludowania plików ;) .... bo toż przecież - jeśli ten plik *.h będzie zainkludowany przez inkludem avr/io.h jak widać w ostatnim pytaniu no to co? ... to nie najlepszym rozwiązaniem będzie podpowiedź żeby człowiek inkludował znowu avr/io.h w pliku nagłówkowym bo za chwilę - jeśli nie zrozumie w czym rzecz - to będzie szprycował pliki nagłówkowe niepotrzebnymi inkludami jak dobrą kaszę skwarkami ;) tyle że nadmiarowo ;) - tak mi się wydaje .... i stąd wynikał mój to podpowiadania akurat

_________________
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: 30 wrz 2016, o 13:29 
Offline
Użytkownik

Dołączył(a): 07 cze 2016
Posty: 563
Pomógł: 143

No cóż. To były tylko pytania, które miały na celu zdiagnozowanie przyczyny, to nie była propozycja rozwiązania problemu.
Wytłumaczenie miało być następnym krokiem, ale niestety kolega mnie ubiegł ;)



Góra
 Zobacz profil  
cytowanie selektywne  Cytuj  
PostNapisane: 30 wrz 2016, o 13:32 
Offline
Moderator
Avatar użytkownika

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

andrews napisał(a):
to nie była propozycja rozwiązania problemu.

ale ja rozumiem ... i nie twierdzę, że było inaczej .... ;) ... dlatego pisałem na spokojnie, że "tak mi się wydaje"

_________________
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: 30 wrz 2016, o 15:03 
Offline
Użytkownik

Dołączył(a): 25 lip 2015
Posty: 140
Zbananowany użytkownik

Pomógł: 18

Jeśli dobrze zrozumiałem powyższe, to znaczy, że pliki biblioteczne należy dołączać do plików źródłowych, a nie do plików nagłówkowych - Tak?



Góra
 Zobacz profil  
cytowanie selektywne  Cytuj  
PostNapisane: 30 wrz 2016, o 15:45 
Offline
Moderator
Avatar użytkownika

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

Sparrow-hawk napisał(a):
Jeśli dobrze zrozumiałem powyższe, to znaczy, że pliki biblioteczne należy dołączać do plików źródłowych, a nie do plików nagłówkowych - Tak?


No chyba tak ;) pliki *.h zawsze dołączamy do plików *.c a nie odwrotnie

_________________
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: 30 wrz 2016, o 16:58 
Offline
Użytkownik

Dołączył(a): 07 cze 2016
Posty: 563
Pomógł: 143

mirekk36 napisał(a):
ale ja rozumiem ... i nie twierdzę, że było inaczej ....

.. ale i tak mi się dostało, że teraz początkujący "będzie szprycował pliki nagłówkowe niepotrzebnymi inkludami", i za te skwarki w kaszy... :)

mirekk36 napisał(a):
No chyba tak pliki *.h zawsze dołączamy do plików *.c a nie odwrotnie

Koledze Sparrow-hawk chodziło chyba bardziej o zagnieżdżanie plików nagłówkowych.
Ja już się nie odważę odpowiadać...



Góra
 Zobacz profil  
cytowanie selektywne  Cytuj  
PostNapisane: 30 wrz 2016, o 17:06 
Offline
Użytkownik

Dołączył(a): 25 lip 2015
Posty: 140
Zbananowany użytkownik

Pomógł: 18

Tak, dokładnie, chodziło mi o zagnieżdżanie plików nagłówkowych.



Góra
 Zobacz profil  
cytowanie selektywne  Cytuj  
PostNapisane: 30 wrz 2016, o 17:47 
Offline
Moderator
Avatar użytkownika

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

andrews napisał(a):
.. ale i tak mi się dostało, że teraz początkujący "będzie szprycował pliki nagłówkowe niepotrzebnymi inkludami", i za te skwarki w kaszy...

No to chyba ja też nie powinien się odważyć odpowiadać na forum ;) toż ja to pisałem do AUTORA i wątku i tego dodatkowego pytania ;) BOŻE ! Panowie no proszę - proszę nie przesadzajcie ... Fakt miałeś pewnie swój sposób aby naprowadzić pytającego na trop a ja być może uprzedziłem no ale czy zrobiłem to jakoś złośliwie? specjalnie na złość ? .... no proszę

_________________
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: 1 paź 2016, o 21:05 
Offline
Użytkownik

Dołączył(a): 07 cze 2016
Posty: 563
Pomógł: 143

Kolego Mirku.

Myślę, że niepotrzebne te nerwy ;) Skoro napisałeś, że "nie najlepszym rozwiązaniem będzie podpowiedź żeby człowiek inkludował znowu avr/io.h w pliku nagłówkowym", to moją reakcją (chyba naturalną) było zasygnalizowanie, że nie zgadzam się z tą opinią, bo to nie była stricte odpowiedź, a raczej wstęp do odpowiedzi. Moje stwierdzenie "kolega mnie ubiegł" miało oznaczać tylko tyle, że nie zdążyłem jej udzielić do końca (przez co Twoja ocena bazowała na niepełnych danych), a nie o to, że mam do Ciebie jakieś pretensje. Nie wiem, skąd w ogóle taki pomysł ;) Może czas na jakiś urlop, żeby się trochę odstresować ;)

Niemniej jednak może nie do końca jestem zawsze taki poważny, na jakiego wyglądam. Proponuję jednak do niektórych moich wypowiedzi podchodzić z pewnym dystansem i przymrużeniem oka. Po stwierdzeniu, że nie odważę się już odpowiadać, nie wstawiłem wprawdzie tego średnika i nawiasu, jednak sądziłem, że to sformułowanie jest na tyle infantylne, iż nikt nie powinien potraktować go poważnie... Po prostu mam takie chore poczucie humoru. Często Ci, którzy mnie zbyt dobrze nie znają, opacznie odczytują moje intencje... I później następuje "styk mniemalny" (cytując znanego klasyka - profesora mniemanologii stosowanej). Dobrą stroną tej sytuacji jest to, że ten "styk mniemalny" staje się w efekcie (zgodnie z teorią profesora) motorem postępu.

Spróbuję może też napisać coś na temat zagnieżdżania plików nagłówkowych, żeby nie było całkiem off-topic.
Zaznaczam, że to tylko moje mniemanie.

Często tendencją wśród początkujących jest propagowanie swoich definicji, funkcji i zmiennych extern po całym projekcie, tak aby były dostępne w każdym pliku źródłowym. Niestety, nie jest to (w moim mniemaniu) dobra praktyka. W uproszczeniu można to porównać do sytuacji, gdy wszyscy pracownicy firmy mają klucze do wszystkich pomieszczeń czy też dostęp do wszystkich dokumentów firmowych. Nikt chyba nie uważa, że to dobra sytuacja dla firmy (niektórzy pracownicy być może nie mieliby nic przeciwko ;)). Dlatego też podstawowa zasada powinna być taka, że każdy plik *.c powinien mieć dostęp tylko i wyłącznie do definicji, funkcji i zmiennych extern, które są mu potrzebne. W związku z tym zalecane jest dołączanie plików nagłówkowych bezpośrednio w pliku *.c, a nie np. pośrednio poprzez jego plik nagłówkowy. Tenże plik nagłówkowy będzie przecież dołączany również do innych plików *.c łącznie ze wszystkimi zawartymi w nim (niekoniecznie tam potrzebnymi) plikami nagłówkowymi.

Nie oznacza to wcale, że nie wolno stosować zagnieżdżania w ogóle. Łatwo zauważyć w plikach nagłówkowych avr-libc, że zagnieżdżanie jest tam dosyć często stosowane. Istnieją sytuacje, kiedy dołączanie plików nagłówkowych pośrednio poprzez inne pliki nagłówkowe jest uzasadnione.

Najlepiej chyba będzie wytłumaczyć na przykładzie. Weźmy przykład z tego wątku.
W pliku "lcd44780.h" mamy deklarację funkcji:
void lcd_locate(uint8_t y, uint8_t x);
Funkcja ta ma dwa parametry typu uint8_t.
Teraz plik "lcd44780.h" dołączamy do pliku "lcd44780.c". Typ uint8_t nie jest jednak typem wbudowanym, więc aby plik "lcd44780.c" skompilował się prawidłowo, musi przed deklaracją naszej funkcji zawierać definicję typu uint8_t. Szczęśliwym trafem mamy też do tego pliku dołączony plik nagłówkowy "avr/io.h", poprzez który (też nie bezpośrednio) dołączany jest także plik "stdint.h". W pliku "stdint.h" jest potrzebna nam definicja typu uint8_t. Jeśli więc dołączymy plik "lcd44780.h" po dołączeniu "avr/io.h", to kompilacja przebiegnie prawidłowo.

No ale to jeszcze nie koniec. Funkcje do obsługi LCD stworzyliśmy przecież, aby z nich korzystać. Dołączamy więc plik "lcd44780.h" do pliku "jakis.c" i próbujemy skompilować. Niestety tak się składa, że w pliku "jakis.c" nie mamy akurat dołączonego pośrednio czy bezpośrednio pliku nagłówkowego "stdint.h" z definicją typu uint8_t, więc plik nam się nie skompiluje. Musimy w takim przypadku dołączyć plik "stdint.h" przed dołączeniem pliku "lcd44780.h".

Aby tego uniknąć dodać można dyrektywę:
#include <stdint.h>
w pliku "lcd44780.h" przed deklaracją funkcji. Wtedy wystarczy w pliku "jakis.c" dołączyć tylko plik "lcd44780.h", a kompilator nie zakończy pracy z błędem unknown type name 'uint8_t'.

Moim zdaniem w sytuacjach, kiedy istnieją tego typu zależności, zagnieżdżanie jest dopuszczalne i nie jest niezgodne z dobrym stylem programowania. Jedynym mankamentem jest to, że patrząc na dyrektywy #include w pliku *.c nie znamy od razu pełnej listy dołączonych plików nagłówkowych, ale nie jest przecież dużym problemem to sprawdzić.

I to by było na tyle.


Autor postu otrzymał pochwałę


Góra
 Zobacz profil  
cytowanie selektywne  Cytuj  
PostNapisane: 1 paź 2016, o 23:02 
Offline
Użytkownik

Dołączył(a): 14 sie 2016
Posty: 905
Pomógł: 39

To się powinno znaleźć w poradnikach :)
W jednym poście wytłumaczyłeś zasady includowania w sposób odpowiedni dla początkujących, zwłaszcza tych którzy nie mieli wcześniej żadnej styczności z programowaniem.

_________________
Moje porady są błędne,nie czytać,zbanować od razu.



Góra
 Zobacz profil  
cytowanie selektywne  Cytuj  
PostNapisane: 1 paź 2016, o 23:22 
Offline
Moderator
Avatar użytkownika

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

andrews napisał(a):
Myślę, że niepotrzebne te nerwy Skoro napisałeś, że "nie najlepszym rozwiązaniem będzie podpowiedź żeby człowiek inkludował znowu avr/io.h w pliku nagłówkowym", to moją reakcją (chyba naturalną) było zasygnalizowanie, że nie zgadzam się z tą opinią, bo to nie była stricte odpowiedź, a raczej wstęp do odpowiedzi. Moje stwierdzenie "kolega mnie ubiegł" miało oznaczać tylko tyle, że nie zdążyłem jej udzielić do końca (przez co Twoja ocena bazowała na niepełnych danych), a nie o to, że mam do Ciebie jakieś pretensje. Nie wiem, skąd w ogóle taki pomysł Może czas na jakiś urlop, żeby się trochę odstresować

Ja widzę, że my już tak któryś raz - ale może kiedyś dojdziemy do ładu ;) ... Po PIERWSZE - wcale się nie denerwuję tylko szkoda mi się zrobiło i przykro, że jakoś hmmm może źle odebrałeś moje słowa, albo że niby zasugerowałem, że coś źle piszesz itp itd ... a KOMPLETNIE nie miałem tego na myśli ... i nawet gdy kolejny raz starałem się to napisać - to ty znowu, że ja się denerwuję i że czas się odstresować. ;) Jeszcze raz mówię zero nerwów tylko ciężko w suchym tekście widzę czasem się porozumieć co do intencji ...

andrews napisał(a):
Proponuję jednak do niektórych moich wypowiedzi podchodzić z pewnym dystansem i przymrużeniem oka.

Postaram się ... ale jak mówię mi też czasem to nie wychodzi więc przepraszam.

andrews napisał(a):
Spróbuję może też napisać coś na temat zagnieżdżania plików nagłówkowych,

Bardzo fajny opis ...

Natomiast ja po tej twojej wypowiedzi, jeszcze raz ją zacytuję:

andrews napisał(a):
No tak, tylko że to zależy od kolejności inkludowania (jak widać nie zawsze ta kolejność jest prawidłowa u początkujących). Jak się zainkluduje np. io.h na początku pliku nagłówkowego zamiast w pliku .c to nie będzie tego problemu

Myślałem, że ty po prostu tak wprost i od razu dopuszczasz do tego, żeby dodawać inkludy w *.h zamiast naprawić kolejność i to mi się gryzło - ale cała moja odpowiedź nie miała na celu nie wiem "zjechania ciebie" czy wykazania że kompletnie źle podpowiadasz czy coś ....

Dla mnie większy priorytet ma naprowadzenie na to żeby poprawnie inkludować czyli najpierw pliki systemowe <> a później własne "" wtedy zawsze uniknie się niechcący tego typu problemów. Pisałem też delikatnie - że "tak mi się wydaje" ... wdając się jednocześnie w delikatną polemikę z tobą - bo jeśli uważasz, że jest inaczej to ja wręcz chętnie posłucham kontrargumentów ... uwierz mi ja się nadal i wciąż tylko uczę języka C, a przez skórę czuję - że ty zdaje się poruszasz się w nim o wiele lepiej niż ja .... Dlatego czasem z takiej polemiki/dyskusji sam się czegoś douczę/dowiem.... A zawsze gdy czuję przez skórę, że ktoś zna dużo lepiej ode mnie C (mnóstwo jest takich osób) ;) .... to nie mam zamiaru komuś robić zarzutów czy pouczać ... I proszę tak podchodź też do moich wypowiedzi ... gdy się czasem spotykamy w niektórych wątkach na tym polu ok ? ;)

Myślę - że DUŻO lepiej by się dyskutowało właśnie gdzieś na żywo ;) a jeszcze przy jakimś soczku jabłkowym to już w ogóle ! ...

_________________
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: 1 paź 2016, o 23:50 
Offline
Użytkownik

Dołączył(a): 04 paź 2013
Posty: 36
Pomógł: 0

Jako autor tematu dziękuję wszystkim za wzięcie udziału w dyskusji. To co chciałem się dowiedziałem, ale gdyby ktoś chciał jeszcze coś dodać to z niecierpliwością czekam.



Góra
 Zobacz profil  
cytowanie selektywne  Cytuj  
PostNapisane: 2 paź 2016, o 10:47 
Offline
Użytkownik

Dołączył(a): 07 cze 2016
Posty: 563
Pomógł: 143

mirekk36 napisał(a):
andrews napisał(a):
No tak, tylko że to zależy od kolejności inkludowania (jak widać nie zawsze ta kolejność jest prawidłowa u początkujących). Jak się zainkluduje np. io.h na początku pliku nagłówkowego zamiast w pliku .c to nie będzie tego problemu
Myślałem, że ty po prostu tak wprost i od razu dopuszczasz do tego, żeby dodawać inkludy w *.h
To raczej było stwierdzenie faktu, a nie porada, no ale może faktycznie, jak tak się teraz dokładniej przyjrzę temu, co napisałem, to chyba miałeś prawo tak pomyśleć. Czasami jednak to niełatwe zadanie, "aby język giętki powiedział wszystko, co pomyśli głowa".

mirekk36 napisał(a):
nie mam zamiaru komuś robić zarzutów czy pouczać ... I proszę tak podchodź też do moich wypowiedzi ... gdy się czasem spotykamy w niektórych wątkach na tym polu ok ?
Postaram się, choć nie mogę zagwarantować, że się uda ;)

Nie wiem, czy przeczytałeś szerszy cytat z wypowiedzi profesora (moim zdaniem ciekawy) na temat tego "styku mniemalnego" (podałem link, żeby nie zaśmiecać forum). Pytam o to, ponieważ zastanawiam się, czy ta moja drażliwość nie wynika ze zbyt dużej różnicy między moim (zbyt wysokim) mniemaniem o sobie, a mniemaniem innych o mnie. Wprawdzie mniemam, że jestem dość skromy i krytyczny wobec siebie (może czasami za bardzo), ale to może być tylko moje mniemanie. Wprawdzie teoretycznie ten "styk mniemalny" może być motorem postępu, jednak myślę, że przy zbyt dużej różnicy mniemań może też być destrukcyjny. Być może będę musiał popracować, żeby tę różnicę nieco zmniejszyć (z mojej strony).

mirekk36 napisał(a):
uwierz mi ja się nadal i wciąż tylko uczę języka C, a przez skórę czuję - że ty zdaje się poruszasz się w nim o wiele lepiej niż ja

Masz rację, zdaje Ci się :) Ja też cały czas się uczę języka C, ale wiesz jak to jest, im więcej się uczę, tym jeszcze więcej nie umiem. Temat jest obszerny, są różne standardy, rozszerzenia, inne są techniki pisania na systemy wbudowane (zależne od platformy sprzętowej), inne na PC. Zastanawia mnie ilu ludzi na świecie mogłoby powiedzieć, że wie o języku C wszystko i nie musi się już uczyć.

Poza tym oprócz języka C są też inne języki, które chciałoby się poznać, jest wiele innych ciekawych zagadnień z dziedziny elektroniki (i nie tylko)... a czasu tak mało....

delma199 napisał(a):
To co chciałem się dowiedziałem, ale gdyby ktoś chciał jeszcze coś dodać to z niecierpliwością czekam.
Rozumiem, że problem został rozwiązany?
Sprecyzuj może, co chciałbyś, żeby dodać. Może masz jeszcze jakieś pytania?



Góra
 Zobacz profil  
cytowanie selektywne  Cytuj  
PostNapisane: 2 paź 2016, o 11:25 
Offline
Moderator
Avatar użytkownika

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

andrews napisał(a):
Postaram się, choć nie mogę zagwarantować, że się uda

:lol: no ja mam podobnie - więc razem się starajmy pilnować :lol:

andrews napisał(a):
Nie wiem, czy przeczytałeś szerszy cytat z wypowiedzi profesora (moim zdaniem ciekawy) na temat tego "styku mniemalnego"

tak tak ;) ... Ja pamiętam niegdysiejsze wykłady mniemanologii stosowanej w TV :) ... i charakterystyczny zwrot na koniec:

andrews napisał(a):
I to by było na tyle.

;)

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

Strefa czasowa: UTC + 1


Kto przegląda forum

Użytkownicy przeglądający ten dział: Brak zidentyfikowanych użytkowników i 0 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:  
cron
Sitemap
Technologię dostarcza phpBB® Forum Software © phpBB Group phpBB3.PL
phpBB SEO