Не уверен, что вы пытаетесь сделать.
JUNK
расширяется до JUNK_INSTRUCTION(generate_instruction)
, который расширится до:
__asm _emit PUSH
__asm _emit generate_instruction
__asm _emit POP
generate_instruction
- это просто имяфункция.Компилятор не собирается запускать функцию и заменять ее только потому, что вы ее называете.
В соответствии с документами , вам необходимо предоставить постоянное значение байта, как вы это делаете с двумя другими.
Я думаю, вы действительно запутались в понятиях вызовов во время выполнения, вычислений во время компиляции и макросов.