2 ну чтоб так просто - лезем в "C:\WinAVR\avr\include " и там берём например - error.h открываем его и видим
#if defined (FULL_ERROR_SUPPORT)
#define ERRSUP_IOMAN
#define ERRSUP_DISC
#define ERRSUP_PARTITION
#define ERRSUP_FAT_FILESYSTEM
#define ERRSUP_FAT_FILESYSTEM
#elif defined (BASE_ERROR_SUPPORT)
#define ERRSUP_IOMAN
#define ERRSUP_DISC
#define ERRSUP_PARTITION
#endif
#if defined (HWINT_HAS_ERROR_SUPPORT) && defined (INTERFACE_ERROR_SUPPORT)
#define ERRSUP_HWINTERFACE
#endif
#ifdef ERRSUP_IOMAN
#define IOMAN_ERR_EUINT8 euint8 error;
#define ioman_setError(ioman,errval) ioman->error = errval
#define ioman_getError(ioman) ioman->error
#else
#define IOMAN_ERR_EUINT8
#define ioman_setError(ioman,errval)
#define ioman_getError(ioman) 0
#endif
1-я строчка означает что если определено FULL_ERROR_SUPPORT, тогда определяются ERRSUP_IOMAN и так далее, а если BASE_ERROR_SUPPORT - тогда ERRSUP_IOMAN и так далее.. Ну а далее вам прочитать думаю труда не составит.. если хотите чтото посложней - лезьте на
http://elm-chan.org и там исчите ff004b.zip или ffsample.zip - от там точно наглядный пример хорошо подготовленной программы с возможность условной компиляции...