__LP64__ в Windows? - PullRequest
       24

__LP64__ в Windows?

2 голосов
/ 19 ноября 2009

Я знаю, что Windows использует LLP вместо модели данных LP, но есть ли предопределенная переменная или что-то еще? в OS X / Linux вы можете использовать __LP64__.

Ответы [ 3 ]

4 голосов
/ 01 апреля 2010

Один из способов проверки - с помощью _WIN64, который определен только в 64-битной Windows (см. здесь и здесь ). Например:

#if defined(__LP64__)
// LP64 machine, OS X or Linux
#elif defined(_WIN64)
// LLP64 machine, Windows
#else
// 32-bit machine, Windows or Linux or OS X
#endif
0 голосов
/ 19 ноября 2009

Я не знаю, есть ли такая переменная, но вы можете проверить на _MSC_VER, что будет определено в Visual Studio. Затем вы можете принять модель LLP. Если это когда-либо изменится в будущем, вы можете использовать значение _MSC_VER для проверки версий компилятора.

Если вы ищете типы стандартного размера, посмотрите boost :: integer , который определяет целочисленные типы с фиксированным размером в бит.

0 голосов
/ 19 ноября 2009

Вам действительно нужна переменная препроцессора (в зависимости от случая она может потребоваться, но вы также можете обойтись без нее)? sizeof(long) == sizeof(void*) не достаточно хорош?

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...