We are running a survey to help us improve the experience for all of our members. If you see the survey appear, please take the time to tell us about your experience if you can.
If I
#define aa=DWORD[0x30];
#define aa=DBYTE[0x30];
And, hopefully to avoid a future problem, note that the syntax for the #define is incorrect. There is no equals sign in the definition, and, since this directive is part of the preprocessor and not the compiler, no semicolon is needed. The definition should look something like: #define aa DWORD[0x30] After this statement, any occurrence of the text "aa" in the source will be replaced by the text "DWORD[0x30]" before the compiler sees it. (I'd choose a longer, less likely to collide, and more descriptive name for the macro.) Note that DWORD is itself a macro, defined in absacc.h. #define DWORD ((unsigned int volatile data *) 0) So, after macro expansion, "aa" will turn into ((unsigned int volatile data *) 0)[0x30] In other words, the 16-bit unsigned int at address 0x60 in the data space. If this phrase happens to be syntactically legal C at the point where you use it, then you are in good shape. You can, for example, use this macro on the left or right side of an assignment, or as a parameter in a function.