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



Teraz jest 6 lut 2026, o 06:39


Strefa czasowa: UTC + 1





Utwórz nowy wątek Odpowiedz w wątku  [ Posty: 8 ] 
Autor Wiadomość
PostNapisane: 10 sty 2014, o 20:41 
Offline
Użytkownik

Dołączył(a): 07 sty 2013
Posty: 89
Pomógł: 5

Witam .
W jaki sposób "spreparować" stałe dane wejściowe , aby wyrażenia z nich stworzone można było użyć jako warunku kompilacji fragmentów kodu ?

Przykład
#define ala 243
#define ola 128

#if (ala>ola) // jest traktowane jak prawda/fałsz , coś jak #ifdef
// kompiluj ten kod// kompiluje tylko dla ala==ola
#endif

nie działa też ze stałymi :
static const uint8_t ala = 243
static const uint_8t ola = 128

if (ala<ola){
// warunek znany i fałszywy w chwili kompilacji - oczekiwał bym iż optymalizator, powinien wyrzucić, wyrzuca zarówno dla prawdziwego jak też fałszywego warunku ...
}

Powodem poszukiwania jest uniknięcie deklarowania bardzo wielu dodatkowych stałych (ponad 30) konfiguracyjnych, które tak naprawdę wynikają z już zadeklarowanych i koniecznych stałych,
nadto potrzebuję do ustalenia tych warunków, wykonać proste obliczenia na zadeklarowanych stałych.



Góra
 Zobacz profil  
cytowanie selektywne  Cytuj  
PostNapisane: 10 sty 2014, o 20:50 
Offline
Użytkownik
Avatar użytkownika

Dołączył(a): 07 lut 2013
Posty: 600
Pomógł: 47

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

_________________
https://www.instagram.com/myfirstquadcopter/



Góra
 Zobacz profil  
cytowanie selektywne  Cytuj  
PostNapisane: 10 sty 2014, o 21:23 
Offline
Użytkownik

Dołączył(a): 07 sty 2013
Posty: 89
Pomógł: 5

też tak myślałem , niestety jak w przykładzie na załączonym obrazku
"chmurka wydziwia" token is not a valid binary operator in preprocessor subexpression
Obrazek

------------------------ [ Dodano po: 7 minutach ]

ps. dodam tylko iż całość operacji dzieje się w w osobnym pliku poza tym z funkcją main



Góra
 Zobacz profil  
cytowanie selektywne  Cytuj  
PostNapisane: 10 sty 2014, o 21:32 
Offline
Użytkownik
Avatar użytkownika

Dołączył(a): 07 lut 2013
Posty: 600
Pomógł: 47

za #define nie dajemy średnika


Autor postu otrzymał pochwałę

_________________
https://www.instagram.com/myfirstquadcopter/



Góra
 Zobacz profil  
cytowanie selektywne  Cytuj  
PostNapisane: 10 sty 2014, o 21:33 
Offline
Moderator
Avatar użytkownika

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

a kto widział żeby definicje stałych kończyć srednikiem ? ;) w Bluebooku wyjaśniam tę sytuację dość precyzyjnie

pomyśl sobie jak to się rozwinie do kompilacji

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


po rozwinięciu będzie wyglądało tak:

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


sądzisz że końpilator nie ma prawa się denerwować ? ;)

_________________
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: 10 sty 2014, o 21:38 
Offline
Użytkownik

Dołączył(a): 07 sty 2013
Posty: 89
Pomógł: 5

.. dzięki , to z powodu za szybkiej przeróbki static const uint8_t .. ;
jeszcze nie chce działać zwykłe sprawdzenie bitu 0 jako parzystości,
nie wiem też czemu rzekomo ( i nie tylko ) pewniejsza konstrukcja ze static const.. nijak nie działa ?

------------------------ [ Dodano po: 6 minutach ]

@ mirekk36, BB" łyknąłem", ciągle korzystam , jednak nie zawsze starcza... jak w powyższym temacie :shock:

ad. końpilator , cóz mi on , gdy ja sam dopiero się denerwuję .



Góra
 Zobacz profil  
cytowanie selektywne  Cytuj  
PostNapisane: 10 sty 2014, o 21:49 
Offline
Użytkownik
Avatar użytkownika

Dołączył(a): 07 lut 2013
Posty: 600
Pomógł: 47

Cytuj:
jeszcze nie chce działać zwykłe sprawdzenie bitu 0 jako parzystości,

A w który to bit w twoim kodzie kodzie?

------------------------ [ Dodano po: 1 minucie ]

jp_elek napisał(a):
nie wiem też czemu rzekomo ( i nie tylko ) pewniejsza konstrukcja ze static const.. nijak nie działa ?

A w którym miejscu deklarujesz te zmienne, czy ta funkcja je widzi?

------------------------ [ Dodano po: 2 minutach ]

Przepraszam STAŁE bo to const

------------------------ [ Dodano po: 8 minutach ]

Poza tym jak const czyli stała to po co static jeżeli to stała która nie może się zmienić, no ale może się mylę to niech mnie ktoś uświadomi.

_________________
https://www.instagram.com/myfirstquadcopter/



Góra
 Zobacz profil  
cytowanie selektywne  Cytuj  
PostNapisane: 10 sty 2014, o 21:58 
Offline
Użytkownik

Dołączył(a): 07 sty 2013
Posty: 89
Pomógł: 5

deklaracje są standardowo umieszczone w coś..h, a funkcja w coś..c - includującym coś..h,

co do parzystości ,najprościej, kiedyś było tak iż
dowolna całkowita parzysta to 0bxxxxx....xx0 // najmłodszy bit jest zerem
zatem nieparzysta to zawsze 0bxxxxx...xx1 // tak było kiedyś , myśle że się nie zmieniło ? :roll: :roll:



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

Strefa czasowa: UTC + 1


Kto przegląda forum

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