3.4.2 D: Define a Macro

The -Dmacro=text option allows you to define preprocessor macros. For macros to be subsequently processed, the source files must be preprocessed by having them use a .S file extension or by using the -xassembler-wth-cpp option.

A space may be present between the option and macro name.

With no =text specified in the option, this option defines a preprocessor macro called macro that will be considered to have been defined by any preprocessor directive that checks for such a definition (e.g. the #ifdef directive) and that will expand to be the value 1 if it is used in a context where it will be replaced. For example, when using the option, -DMY_MACRO (or -D MY_MACRO) and supplying the following code:

#ifdef MY_MACRO
movlw MY_MACRO;
#endif

the movlw instruction will be assembled and the value 1 will be assigned to the W register.

When the replacement, text, is specified with the option, the macro will subsequently expand to be the replacement specified with the option. So if the above example code was compiled with the option -DMY_MACRO=0x55, then the instruction would be assembled as: movlw 0x55

All instances of -D on the command line are processed before any -U options.