Как я могу выяснить, для какой архитектуры я компилирую в GCC? - PullRequest
1 голос
/ 26 октября 2009

Я хочу написать код, который легко компилируется для 32- или 64-битного Linux в gcc. Я думаю, что я ищу что-то вроде

#ifdef IA32
subl $0x4, %esp
#endif

#ifdef X86_64
subl $0x4, %rsp
#endif

Ответы [ 2 ]

2 голосов
/ 26 октября 2009

Скорее всего, вы ищете _LP64 , который определяется, когда размер указателя равен 64-битной ширине

1 голос
/ 27 октября 2009

Я считаю, что должно работать следующее:

#if defined __i386__
subl $0x4, %esp
#elif defined __x86_64__
subq $0x4, %rsp
#else
#error Unknown architecture!
#endif

Исправлен суффикс для sub в 64-битном коде для вас тоже =)

...