A! Jeszcze jedno mi się rzuciło w oczy: kłopotliwy średnik po definicji LED. Nie jest to w sumie błąd (w tym programie), ale w przyszłości może się zemścić. Definicje preprocesora działają jak proste "znajdź i zamień" w edytorze tekstu. Preprocesor wstawia "zawartość" definicji tam, gdzie pojawi się jej nazwa. Czyli na jednym z etapów kompilacji, z tych dwóch linijek:
Zaloguj się, aby zobaczyć kod
Powstanie jedna linijka kodu:
Zaloguj się, aby zobaczyć kod
I już widać, że na końcu są dwa średniki (jeden z makrodefinicji, drugi z tej linii kodu). Tutaj akurat nie jest to problem, ale gdyby to nie była dioda tylko np przycisk sprawdzany w warunku if, to wyszła by "lipa" z tym średnikiem:
Zaloguj się, aby zobaczyć kod
bo po zadziałaniu preprocesora powstałoby:
Zaloguj się, aby zobaczyć kod
Średnik z makrodefinicji wylądowałby w środku warunku. I kompilator zasygnalizowałby błąd, w stylu "expected ‘)’ before ‘;’ token".
0