You copied the Doc URL to your clipboard.

#pragma thumb

This pragma switches code generation to the Thumb instruction set. It overrides the --arm compiler option.

If you are compiling code for a Thumb processor without Thumb-2 technology and using VFP, any function containing floating-point operations is compiled for ARM.


Use #pragma push and #pragma pop on #pragma arm or #pragma thumb outside of functions, but not inside of them, to change state. This is because #pragma arm and #pragma thumb only apply at the function level. Instead, put them around the function definition.

/* foo.c */

#pragma push        // in arm state, save current pragma state
#pragma thumb       // change to thumb state

void bar(void)

#pragma pop         // restore saved pragma state, back to arm state

int main(void)
/* end of foo.c */