LINUX.ORG.RU

[C/C++][x32, x64] Как узнать разрядность платформы на этапе препроцессинга?


0

1

Здравствуйте!


Вопрос в следующем. Существует ли какой-нибудь кроссплатформенный метод определения разрядности платформы на этапе препроцессинга?

Гоголь показывает только:

#ifdef _WIN64

и какое-то дикое обсуждение:

http://ru.w3support.net/index.php?db=so&id=735647

Но нам нужно другое - способ, работающий и в GCC Linux, и в винде, и с разными компиляторами.

У кого-нибудь готовое условие не завалялось?

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

И меня пересади, но не на мультилиб, и чтобы все кривые программы, заточенные под 32 бита и wine работали нормально.

buddhist ★★★★★
()
#ifdef __x86_64__
    ... код для 64-битной архитектуры ...
#endif

#ifdef __i386__
    ... код для 32-битной архитектуры ...
#endif

В GCC работает, в остальных компиляторах не знаю.

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

Однако если учесть, что GCC кросплатформенный и его можно использовать и под Windows и под Linux, можно сказать что этот способ вполне себе кроссплатформенен, а MSVC не нужен :)

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

Что, даже на powerpc?

Вероятно там будет другой символ препроцессора. Типа __PowerPC__. Но какой точно - я не знаю. Пример привёл только для интеловской архитектуры.

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