Используя макросы WIN32 или _MSC_VER межплатформенный

Я компилирую в соответствии с Linux (GCC 4.4.2) и Windows VS C ++ Express Edition 2008

Я в настоящее время компилирую под Windows XP Pro 32 бита и добавил это к моему исходному коду.

#if defined( WIN32 )
/* Do windows stuff here */
#endif

Однако код в, если оператор отключен (grayed). Однако, если я делаю следующее:

#if defined( _MSC_VER )
/* Do windows stuff here */
#endif

Если код оператора включен.

Я просто задаюсь вопросом, что должно я использовать. Я видел, что многие программисты используют WIN32. Однако, кажется, не работает на меня. Я должен использовать _MSC_VER вместо этого?

Большое спасибо за любой совет,

9
задан Patrick W 17 July 2015 в 18:48
поделиться

2 ответа

Нет WIN32 . Если вы видели, что он используется где-то еще, либо это неправильно, либо код где-то явно определяет сам этот макрос.

Вам нужен _WIN32 . См. https://docs.microsoft.com/en-us/cpp/preprocessor/predefined-macros для получения списка предопределенных макросов в компиляторе Microsoft.

12
ответ дан 4 December 2019 в 12:18
поделиться

Вместо этого используйте _WIN32. Парсер IntelliSense в VS2008 вызывает затруднения, это не обязательно решит вашу проблему. Он был полностью переписан в VS2010.

2
ответ дан 4 December 2019 в 12:18
поделиться
Другие вопросы по тегам:

Похожие вопросы: