What't wrong with that macro on X86 GNU Assembly? It says the symbol S is undefined during linking.
.macro S size=40 \size .endm
I'm using it like
mov %eax, S