6.1. Predefined Macros One technique through which machine unavoidable machine dependencies may be managed is the predefined macros pro- vided by each compiler to identify the target processor and operating system (if any). These are defined by the compiler driver and may be tested with conditional compilation preprocessor directives. The macros defined by various compilers are listed in table 2. These can be used as shown in the example in fig . ___________________________________________ |_Macro_______________Defined_for__________| | i8051 8051 processor family | | i8086 8086 processor family | | i8096 8096 processor family | | z80 Z80 processor and derivatives | | m68000 68000 processor family | | m6800 6801, 68HC11 and 6301 processors| | m6809 6809 processor | | DOS MS-DOS and PC-DOS | | CPM CP/M-80 and CP/M-86 | | TOS Atari ST | |__________________________________________| Table 2. Predefined Macros #if DOS char * filename = "c:file"; #endif /* DOS */ #if CPM char * filename = "0:B:afile"; #endif /* CPM */