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

KURS HOME ASSISTANT

Chcesz zautomatyzować swój dom bez skomplikowanego kodowania?
Zastanawiasz się nad wyborem sprzętu, oprogramowania i aplikacji?
Od czego zacząć przygodę z HA w 2025? Co będzie najlepsze na start?

Nasz kurs Home Assistant nauczy Cię krok po kroku, jak łatwo zautomatyzować swój dom i oszczędzić na rachunkach za prąd i ogrzewanie. Bez chmur, bez zbędnych abonamentów. Twoja przygoda z Home Assistant zaczyna się tutaj!

↓↓↓

    Szanujemy Twoją prywatność. Możesz wypisać się w dowolnym momencie.




    Teraz jest 17 maja 2025, o 13:22


    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: 232
    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: 27396
    Lokalizacja: Szczecin
    Pomógł: 1043

    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: 27396
    Lokalizacja: Szczecin
    Pomógł: 1043

    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: 27396
    Lokalizacja: Szczecin
    Pomógł: 1043

    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ł: Google [Bot] i 10 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