ATNEL tech-forum https://forum.atnel.pl/ |
|
Problem z dyrektywą kompilacji warunkowej. Proszę o pomoc https://forum.atnel.pl/topic7016.html |
Strona 1 z 1 |
Autor: | wat1970 [ 9 maja 2014, o 09:24 ] |
Tytuł: | Problem z dyrektywą kompilacji warunkowej. Proszę o pomoc |
język c Musisz się zalogować, aby zobaczyć kod źródłowy. Tylko zalogowani użytkownicy mogą widzieć kod. Projekt ustawiony dla ATMEGA8, (w Miscellanous opcja do rozpoznawania procesora po nazwie wpisana zgodnie z bluebookiem )kompilator w Eclipse zgłasza błąd dla drugiego warunku czyli dla atmega328 . Komunikat błędu : ../main.c: In function 'main': ../main.c:81: error: 'EIMSK' undeclared (first use in this function) ../main.c:81: error: (Each undeclared identifier is reported only once ../main.c:81: error: for each function it appears in.) ../main.c:82: error: 'EICRA' undeclared (first use in this function) make: *** [main.o] Error 1 Czy ktoś z Szanownych Forumowiczów byłby uprzejmy podpowiedzieć co może być przyczyną komunikatu o błędzie. Wygląda to tak jakby obie opcje były kompilowane choć warunek spełnia tylko jedna. |
Autor: | karolek [ 9 maja 2014, o 10:13 ] |
Tytuł: | Re: Problem z dyrektywą kompilacji warunkowej. Proszę o pomo |
możesz użyc kompilacji warunkowej np w ten sposób |
Autor: | wat1970 [ 9 maja 2014, o 11:25 ] |
Tytuł: | Re: Problem z dyrektywą kompilacji warunkowej. Proszę o pomo |
język c Musisz się zalogować, aby zobaczyć kod źródłowy. Tylko zalogowani użytkownicy mogą widzieć kod. Jeśli zamiast warunku dotyczącego atmegi328 zmienię zapis na negację !atmega8 to kompilator nie zgłasza wtedy błędów , czyli jeśli mamy w projekcie ustawioną atmegę 8 to drugi warunek nie jest kompilowany i to jest oczywista oczywistość Nadal jednak nie wiem gdzie tkwi przyczyna błędu w zapisie pierwotnym czyli #if MCU == atmega328 . |
Autor: | acid3 [ 9 maja 2014, o 11:40 ] |
Tytuł: | Re: Problem z dyrektywą kompilacji warunkowej. Proszę o pomo |
Jeśliby kolega wpisał język c Musisz się zalogować, aby zobaczyć kod źródłowy. Tylko zalogowani użytkownicy mogą widzieć kod. powinno zadziałać. A czy mógłby kolega pokazać więcej kodu z język c Musisz się zalogować, aby zobaczyć kod źródłowy. Tylko zalogowani użytkownicy mogą widzieć kod. ------------------------ [ Dodano po: 5 minutach ] Ja osobiście bardziej skłanałbym się do zapisu |
Autor: | wat1970 [ 9 maja 2014, o 13:05 ] |
Tytuł: | Re: Problem z dyrektywą kompilacji warunkowej. Proszę o pomo |
Dziękuję bardzo koledze acid3 za podanie alternatywy dla mojego problemu. Bo tak jak kolega podał kod to działa i mucha nie siada. Męczy mnie jednak nadal dlaczego podany przeze mnie zapis nie działa prawidłowo, wzorowałem się tutaj na zapisie Pana Mirka ze strony 137 z Bluebooka łącznie z ustawieniem MCU w Eclipsie C/C++ Build / Settings / AVR Compiler / Miscellanous jako -DMCU=$(AVRTARGETMCU) str 138, w świetle tego zapisu zmienna MCU powinna być teoretycznie rozpoznawana w procesie kompilacji tak jak np F_CPU bez podawania w #define. Jedyne co mi przychodzi do głowy to to , że jednak te ustawienie w Eclipse (-DMCU=$(AVRTARGETMCU) zapodane w Bluebook-u na str 138 coś nie zatrybia u mienia |
Autor: | acid3 [ 9 maja 2014, o 13:10 ] |
Tytuł: | Re: Problem z dyrektywą kompilacji warunkowej. Proszę o pomo |
Później poszukam, bo jakoś nie kojarzę tego z BB ... i zobaczę jak to wygląda... Tak czy inaczej moim zdaniem lepiej jest opierać się na toolchainowych #define'ach bo nie powstaje wtedy bałagan i kilka wersji tego samego. W tym drugim zapisie wystarczy zmienić procka we właściwościach projektu i nic więcej nie trzeba pamiętać. |
Autor: | Jachimo [ 14 wrz 2019, o 18:16 ] |
Tytuł: | Re: Problem z dyrektywą kompilacji warunkowej. Proszę o pomo |
Witam. Miałem podobny problem ATmega328 ale po zastosowaniu "#ifdef __AVR_ATmega328__... #endif" ten niby błąd zniknął (kompilator nie sygnalizował błędu ale w edytorze i eksploratorze był błąd). Piszę niby błąd ponieważ plik *.hex po załadowaniu do procesora działał poprawnie. Co więcej skompilowany kod programu zmniejszył się o 26 bajtów. Ciekaw jestem dlaczego. |
Autor: | rskup [ 15 wrz 2019, o 17:30 ] |
Tytuł: | Re: Problem z dyrektywą kompilacji warunkowej. Proszę o pomo |
wat1970 napisał(a): Dziękuję bardzo koledze acid3 za podanie alternatywy dla mojego problemu. Bo tak jak kolega podał kod to działa i mucha nie siada. Męczy mnie jednak nadal dlaczego podany przeze mnie zapis nie działa prawidłowo, wzorowałem się tutaj na zapisie Pana Mirka ze strony 137 z Bluebooka łącznie z ustawieniem MCU w Eclipsie C/C++ Build / Settings / AVR Compiler / Miscellanous jako -DMCU=$(AVRTARGETMCU) str 138, w świetle tego zapisu zmienna MCU powinna być teoretycznie rozpoznawana w procesie kompilacji tak jak np F_CPU bez podawania w #define. Jedyne co mi przychodzi do głowy to to , że jednak te ustawienie w Eclipse (-DMCU=$(AVRTARGETMCU) zapodane w Bluebook-u na str 138 coś nie zatrybia u mienia A zobacz jak masz w konsoli wypisywane w komendzie kompilowania? -- Pozdrawiam, Robert |
Autor: | xentis [ 15 wrz 2019, o 17:35 ] |
Tytuł: | Re: Problem z dyrektywą kompilacji warunkowej. Proszę o pomo |
Koledzy, zwróciliście uwagę na daty postów? Szpadle połamiecie wykopując tak stare wątki... |
Autor: | rskup [ 16 wrz 2019, o 12:13 ] |
Tytuł: | Re: Problem z dyrektywą kompilacji warunkowej. Proszę o pomo |
xentis napisał(a): Koledzy, zwróciliście uwagę na daty postów? Szpadle połamiecie wykopując tak stare wątki... No tak, dałem się zapędzić do kopania . No cóż, tak bywa jak się jest za dobrym i jak się widzi że ktoś kopie i się nie patrzy tylko łapie za szpadel ...-- Pozdrawiam, Robert |
Strona 1 z 1 | Strefa czasowa: UTC + 1 |
Powered by phpBB® Forum Software © phpBB Group https://www.phpbb.com/ |