У меня есть этот C макрос:
#define syscall(number) \
({ \
asm volatile ( \
".set noreorder\n" \
"nop\n" \
"syscall "#number"\n" \
);\
})
Он прекрасно работает, когда я называю его целым числом:
syscall(5);
Однако, когда я делаю что-то подобное:
#define SYSCALL_PUTC 5
syscall(SYSCALL_PUTC);
Я получаю эту ошибку:
Ошибка: системный вызов инструкции требует абсолютного выражения
Как обойти это? Я не хочу, чтобы мой код был завален магическими числами.