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



Teraz jest 16 kwi 2024, o 10:19


Strefa czasowa: UTC + 1





Utwórz nowy wątek Odpowiedz w wątku  [ Posty: 7 ] 
Autor Wiadomość
PostNapisane: 31 gru 2019, o 11:23 
Offline
Użytkownik

Dołączył(a): 29 paź 2017
Posty: 230
Pomógł: 26

Witajcie
Starając się ogarnąć kompilację warunkową napotkałem jedno zagadnienie z którym sobie nie poradziłem.
Tworząc w Mkclipsie projekt chciałem doprowadzić do kompilacji takiej która by wyeliminowała określone biblioteki.
To znaczy tak:
W projekcie dokopiowana jest na przykład biblioteka IR
Od razu projekt puchnie od obsługi przerwania które jest tam przygotowane.
Bez względu ma to czy cokolwiek robimy z tą biblioteką.

Oczywiście można w MkClipse zaznaczyć żeby dana biblioteka nie uczestniczyła w kompilacji
ale chciałbym to zrobić za pomocą przełącznika
Składnia: [ Pobierz ] [ Ukryj ]
język c
Musisz się zalogować, aby zobaczyć kod źródłowy. Tylko zalogowani użytkownicy mogą widzieć kod.


Tak sobie pomyślałem że gdyby ta biblioteka była niżej głównego poziomu to może tak:
Składnia: [ Pobierz ] [ Ukryj ]
język c
Musisz się zalogować, aby zobaczyć kod źródłowy. Tylko zalogowani użytkownicy mogą widzieć kod.
Sprawdzę i się pochwalę. Albo dostanę po łapach

_________________
Jestem na GG 31324
Nowy soft, nowa nadzieja.



Góra
 Zobacz profil  
cytowanie selektywne  Cytuj  
PostNapisane: 31 gru 2019, o 11:27 
Offline
Moderator
Avatar użytkownika

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

JarekB napisał(a):
ale chciałbym to zrobić za pomocą przełącznika

ale wiesz - to że byś chciał to już insza inszość. Stwórcy C inaczej to wymyślili i niestety musisz się do tego po prostu dopasować programując w C.

Krótko mówiąc - należy wyłączyć pliki *.c z kompilacji i to nie ważne czy MkClipse czy Eclipse czy AS. Stąd też taka opcja pojawiła się w trakcie rozwoju MkClipse - bo i takie potrzeby się pojawiły.

A oczywiście tym co robisz za pomocą preprocesora to jak najbardziej też trzeba - żeby nie próbować przypadkiem dołączać plików nagłówkowych gdy pliki *.c są wyłączone. Więc i jedno i drugie musisz robić i nie ma że boli. A w sumie w MkClipse robi się to na prawdę wygodnie w miarę ;)


Autor postu otrzymał pochwałę

_________________
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: 2 sty 2020, o 19:09 
Offline
Nowy
Avatar użytkownika

Dołączył(a): 09 maja 2015
Posty: 8
Lokalizacja: Lublin
Pomógł: 0

Zrobiłem test z dwiema bibliotekami, z których każda ustawia inne opóźnienie i wszystko działa prawidłowo. Zamiast słowa kluczowego #ifdefine, trzeba użyć #ifdef.

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


Kompilacja przebiega prawidłowo, niezależnie od tego czy nagłówki bibliotek znajdują się w folderze projektu, czy w folderze zewnętrznym. Jeśli biblioteka jest w folderze zewnętrznym, powiązany z nią plik *.c musi być w tym samym folderze.

Można dodatkowo ułatwić sobie życie, używając jedno-plikowych bibliotek (składających się z samego nagłówka). Ma to swoje wady (np. nie można ukryć szczegółów implementacji), ale warto wiedzieć, że istnieje alternatywa.



Góra
 Zobacz profil  
cytowanie selektywne  Cytuj  
PostNapisane: 2 sty 2020, o 20:59 
Offline
Moderator
Avatar użytkownika

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

Rosto napisał(a):
Zrobiłem test z dwiema bibliotekami, z których każda ustawia inne opóźnienie i wszystko działa prawidłowo. Zamiast słowa kluczowego #ifdefine, trzeba użyć #ifdef.

To o czym tu piszesz dotyczy prawdziwych bibliotek czyli kompilowanych do postaci plików z rozszerzeniem *.a W tym wypadku ty piszesz właśnie o jednej z takich bibliotek tzw systemowych inkludowanych za pomocą nawiasów ostrych. I nie ma to za dużo wspólnego z inkludowaniem "tak zwanych" bibliotek. To jest tylko takie potoczne określenie, że np mamy bibliotekę do obsługi LCD czyli czyste żywe pliki *.c i *.h w jakimś tam własnym folderze, które są INKLUDOWANE za pomocą cudzysłowów i o tym pisze wyraźnie autor w pytaniu, podając przykład takiej ala "biblioteki".

Dalej niestety piszesz już hmmm troszkę dziwne rzeczy np:

Rosto napisał(a):
Można dodatkowo ułatwić sobie życie, używając jedno-plikowych bibliotek (składających się z samego nagłówka).


W języku C nie tworzy się takich potworków.

Rosto napisał(a):
Ma to swoje wady (np. nie można ukryć szczegółów implementacji),

Ma to same wady a w większych projektach z wieloma plikami i folderami to po prostu istne szaleństwo jak chodzi o język C.

Rosto napisał(a):
ale warto wiedzieć, że istnieje alternatywa.

W związku z powyższym moim zdaniem warto wiedzieć, że to nie jest żadna alternatywa - tylko błędne posługiwanie się językiem C - niezgodnie z jego zasadami. Co szczególnie początkującym osobom może przynieść same kłopoty.

_________________
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: 2 sty 2020, o 21:31 
Offline
Nowy
Avatar użytkownika

Dołączył(a): 09 maja 2015
Posty: 8
Lokalizacja: Lublin
Pomógł: 0

mirekk36 napisał(a):
Rosto napisał(a):
Można dodatkowo ułatwić sobie życie, używając jedno-plikowych bibliotek (składających się z samego nagłówka).

W języku C nie tworzy się takich potworków.

Oj tam, zaraz "potworków" :)

Przyznaję, że nie jest to rozwiązanie dla początkujących, ale ta metoda jest dość popularna wśród programistów systemowych, zwłaszcza w Windows (np. biblioteki STB: https://github.com/nothings/stb). Rozumiem, że pisanie pod mikro-kontrolery, ma swoje prawa, więc nie będę się wymądrzał, bo mam za mało doświadczenia w temacie.

Co złego, to nie ja.



Góra
 Zobacz profil  
cytowanie selektywne  Cytuj  
PostNapisane: 2 sty 2020, o 23:03 
Offline
Moderator
Avatar użytkownika

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

Nie nie - nie zrozum mnie źle - ja też nie będę się wymądrzał bo kompletnie nie znam się z kolei na pisaniu softów w czystym C pod systemy operacyjne - być może tam są inne zasady - zatem pewnie w tym zakresie ty masz rację.

_________________
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: 3 sty 2020, o 09:35 
Offline
Użytkownik

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

Sorry że się wtrącę, ale dla mnie pisanie softu w powyższym stylu, to strzał w kolano w wersji indyjskiej ;)

Wysłane ze srajfona

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



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

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:  
cron
Sitemap
Technologię dostarcza phpBB® Forum Software © phpBB Group phpBB3.PL
phpBB SEO