LINUX.ORG.RU

Как определить 64 разрядную систему


0

0

Как в Linux и xBsd ( FreeBSD, NetBSD, OpenBSD ) можно определить, что программа компилируется для 64 разрядного процессора? Желательно не подключая заголовочных файлов. Может какой флаг-макрос устанавливаетя при компиляции для такой системы? Спасибо.

anonymous

Ответ на: комментарий от anonymous

Я это знаю. Но, как проверить, чтобы установить типа

#if ( sizeof( long ) == 8 )
#define HAS_64BIT_ARCH
#else
#define HAS_32BIT_ARCH
#endif

?

Можно, конечно, подключить limuts.h, но это делать очень не хочется. Если компилятор устанавливает флаги принадлежности к операционной системе, то почему он не может установить флаг разрядности процессора?

anonymous
()
Ответ на: комментарий от anonymous

Почему не хочется?

Какие причины для столь странных желаний?

А одной только разрядности процессора - маловато будет. Всё равно, для старых 64-разрядных систем sizeof(int) был равен sizeof(void*), сейчас это не так. Кроме этого, ещё важно знать, big endian система, или наоборот. Всё это выясняется только тестами. На то и существуют autotools.

Shapeshifter
()
Ответ на: комментарий от Keiko

sizeof(char): 1
sizeof(short): 2
sizeof(int): 4
sizeof(long): 8
sizeof(long long): 8

sizeof(void *): 8

sizeof(float): 4
sizeof(double): 8
sizeof(long double): 16

syomin
()
Вы не можете добавлять комментарии в эту тему. Тема перемещена в архив.