logo elektroda
logo elektroda
X
logo elektroda
Adblock/uBlockOrigin/AdGuard mogą powodować znikanie niektórych postów z powodu nowej reguły.

Jaki rozumieć taki zapis? Syntax PORTB.2.

JacekCz 28 Mar 2016 02:05 1062 6
  • #1 15560631
    JacekCz
    Poziom 42  
    Wytłumaczcie jak blondyce .... takiej blondynce starej programistce ;)

    Taki zapis:

    Kod: C / C++
    Zaloguj się, aby zobaczyć kod


    Rozumiem co fragment on robi, i to jest fajne, pozwala nie boksować się z maskami bitowymi i tak dalej, ale JAK TO JEST ZROBIONE W JĘZYKU C.

    Bo wg mojej (nie takiej biednej) wiedzy to jest w C syntaktycznie nielegalne. Sorry, nie potrafię przejść nad tym do porządku dziennego. Inaczej mówiąc rozumiem semantykę, ale nie mogę przetrawić syntaktyki.
  • #2 15560692
    Konto nie istnieje
    Konto nie istnieje  
  • #3 15562856
    jestam
    Specjalista Automatyk
    To nie jest normalne C tylko specjalna składnia zrozumiała dla CodeVision AVR - słowa kluczowe sfrb, sfrw. Rozdział 13 manuala
  • #4 15563719
    JacekCz
    Poziom 42  
    W AVR-GCC zostało to skompilowane jako poprawne, choć tej wersji nie flashowałem i nie wiem że ściśle zaimplementowane.

    W języku obiektowym z forsowaniem operatorów niektórzy się "zabawiają" kropką, np taki ewangeliczny kod z Groovy (btw nie ma w tagu syntax opcji na Groovy)

    
       def someDate = new Date()       
       println someDate - 3.months
    


    ma sens, z tym że tam są oficjalne środki by dołączyć rozszerzenia do ostatnich faz kompilacji, i jest tego jakiś koszt

    W sumie kropka w C jest elementem syntaktycznym ale w C++ chyba operatorem???
  • #5 15563869
    jestam
    Specjalista Automatyk
    JacekCz napisał:
    W AVR-GCC zostało to skompilowane jako poprawne


    Mógłbyś wkleić przykład?

    W C++ kropka jest operatorem, ale jednym z nieprzeciążalnych: http://www.stroustrup.com/bs_faq2.html#overload-dot

    W C# też możesz napisać 3.ToString() ale nie identyfikator.3
  • #6 15564177
    JacekCz
    Poziom 42  
    jestam napisał:
    JacekCz napisał:
    W AVR-GCC zostało to skompilowane jako poprawne


    Mógłbyś wkleić przykład?


    trafiony zatopiony.
    Nie jest poprawne.
    expected ';' before numeric constant


    Poprzednio sprawdzałem na AS4 "zgwałconym" na C++ i się makefile wywracały. Wszystko nawet hasło z seksmisji było legalne.
    To był etap migracji na Atmel Studio 7 i nie boksowałem się z tymi makefilami
  • #7 15566878
    JacekCz
    Poziom 42  
    Temat wypada uznać za wyczerpany. Dziękuję za wypowiedzi

    Może jeszcze tylko dodam, że syntaktycznie fajnie rozwiązany dostęp do bitów - jako pola bitowe - to miały borlandy 16bit. W ogóle fajnie był odwzorowany sprzęt, rejestry itd

    Tamten kompilator też był "gwałcony patchami", to jest moje określenie w sensie nie zszedł z abstrakcyjnego zgodnego z teoriami generatora kompilatorów, tylko że niektóre klasy zamiast tylko czytane z headerów były wbudowane w kompilator. Dawało to cudaczne komunikaty błędów w jakimś nowszym borlandzie, gdy prosty syntaktyczny błąd dotyczył TDate (klasy "zaszytej") itd Seria komunikatów była dramatyczna a niezgodna z rozsądkiem.

    Więc takie "patchowanie kompilatorów" ma i złą stronę.

    Nie wszystko mi pasuje w avr-gcc, ale szanuję sposób jak jest zrobione (w czym również zasługa projektu gcc zdolnego do współpracy z nieznanym z góry generatorem kodu)
REKLAMA