Sławek5, obejmowanie zawartości (lub tylko fragmentu) pliku nagłówkowego
w dyrektywy kompilacji warunkowej
nie jest obowiązkowe. To jedna z możliwości
zorganizowania kodu źródłowego, ale nie wymóg.
Nie zmienia to faktu - że taki sposób budowania includów to raczej dobry zwyczaj,
szczególnie gdy są pisane nie tylko na własny użytek, ale też aby inni mogli z nich korzystać.
Jak masz możliwość zerknij na pliki include z pakietu WinAVR....są sobie io.h i interrupt.h
io.h woła includa z avr/io.h
interrupt.h woła include z avr/interrupt.h, a ten na dodatek jeszcze avr/io.h bo do czegoś potrzebuje...
gdy piszesz prosty program, który nie korzysta z przerwań - dołaczasz io.h, tak?
a gdy korzysta z int-ów - to jeszcze dołączasz interrupt.h i gdyby nie te 'zabezpieczenia'
kompilacja byłaby problematyczna.
inny przykład - wracając do io.h - on na bazie typu procesora (też podanego jako symbol
honorowany przez preprocesor) wybiera sobie plik nagłówkowy natywny dla danego MCU...
ale takiego pliku np. io2313.h nie załączysz luzem.... ponieważ dla odmiany:
#ifndef _AVR_IO_H_
# error "Include <avr/io.h> instead of this file."
#endif
to zabezpiecznie przed niezalecanym przez autorów pakietu
sposobem załączania headerów...
pozdrawiam,
tasza