what is the purpose of __ASSEMBLY__?
It is useful when assembly codes and C codes share the header files. Assembler can preprocess #define macros but does not recognize most of C syntaxes such as typedef or function prototypes. By excluding C specific codes by preprocessor when __ASSEMBLY__ macro is defined, the header file can be included by both C and assembly codes.
http://www.cnblogs.com/yc_sunniwell/archive/2010/06/24/1764231.html
+ -
>> <<
> < >= <= == !=
& ^ |
&& ||