Próbuję zdefiniować takie makra w Atmel Studio:
Pierwsze z nich wywołuje taki błąd podczas kompilacji:
Cytat:expression cannot be used as a function
Ten kod znalazłem na wielu stronach internetowych i ponoć ma działać. Co jest z nim nie tak?
Próbuję zdefiniować takie makra w Atmel Studio:
Cytat:expression cannot be used as a function
Mysle ze to co przekazujesz do makra do podstawienia powoduje problemy. Rozwiń sobie makro o zobacz przetworzony przez preprocesor listing.
Ja nie widzę problemów u siebie. kompilue bez pudła.
Napisz jak je wykorzystujesz (a konkretnie tę linie która wywołuje bład)
Pocieszny napisał:Znalazłem problem: brakujący średnik na końcu linii poprzedzającej użycie tego makra.
tmf napisał:makra są złe i należy ich unikać
Są może dwa, trzy przypadki w których użycie makra jest uzasadnione. Zazwyczaj używanie makr świadczy o nieznajomości języka, a katastrofa z tego wynikająca jest tylko przez użycie makra pogłębiana. A używane IDE nie ma tu żadnego znaczenia.
0tmf napisał:Zazwyczaj używanie makr świadczy o nieznajomości język
tmf napisał:A używane IDE nie ma tu żadnego znaczenia
Piotrus_999 napisał:tmf napisał:Zazwyczaj używanie makr świadczy o nieznajomości język
No to wiekszość kodu (jezeli nie całosc) na swiecie napisali ludzie nie znający języka programowania.
Piotrus_999 napisał:tmf napisał:A używane IDE nie ma tu żadnego znaczenia
No przy pisaniu debugowaniu nieco ma - jak nie mozesz podejrzec zdefiniowanej wartości to jest mniej wygodnie jednak.
tmf napisał:A kto powiedział, że w AS nie możesz? Znowu "nie wiem jak" != "nie da się".
Zapodałeś kod z kernela jako przykład niezrozumiałego kodu tylko z tego powodu, że jest dużo preprocesora. Brawo. Ten moduł jest bardzo dobrze opisany w nagłówku. Akurat za pomocą preprocesora da się zrobić naprawdę fajne rzeczy w C. Przykładowo template w C, inicjalizacja skomplikowanych obiektów. Poza tym czepianie się marka: