Форум: Форум C++Разное
Новые темы: 00
Самоучитель MySQL 5. Авторы: Кузнецов М.В., Симдянов И.В. PHP Puzzles. Авторы: Кузнецов М.В., Симдянов И.В. Самоучитель PHP 5 / 6 (3 издание). Авторы: Кузнецов М.В., Симдянов И.В. PHP на примерах (2 издание). Авторы: Кузнецов М.В., Симдянов И.В. PHP 5. На примерах. Авторы: Кузнецов М.В., Симдянов И.В., Голышев С.В.
ВСЕ НАШИ КНИГИ
Консультационный центр SoftTime

Форум C++

Выбрать другой форум

 

Здравствуйте, Посетитель!

вид форума:
Линейный форум Структурный форум

тема: Какое значение лучше выставлять для _WIN32_WINNT?
 
 автор: asker++   (02.02.2012 в 13:07)   письмо автору
 
 

При разработке Windows программ, во всех книгах указывается константа
#define _WIN32_WINNT 0x0500
Сейчас это значение по-прежнему актуально? И вообще нужно ли оно сейчас?

  Ответить  
 
 автор: cheops   (02.02.2012 в 13:37)   письмо автору
 
   для: asker++   (02.02.2012 в 13:07)
 

Это версия Windows, которая позволяет сообщить компилятору каким объемом Windows API вы собираетесь пользоваться. Когда переходят с одного ядра Windows на другое, появляются новые функции Windows API, которые на предыдущей версии не доступны. Понятно, что глупо программировать полосу прогресса в панели задач, для операционных систем предшествующих Win7, в которых такой возможности в заводе не было.
Поэтому вы по прежнему можете использовать это определение для выбора подмножества WindowsAPI. Кстати, вместо числа можно использовать предопределенные константы, которых сейчас довольно много.
Windows 7                                         _WIN32_WINNT_WIN7  (0x0601)
Windows Server 2008                               _WIN32_WINNT_WS08  (0x0600)
Windows Vista                                     _WIN32_WINNT_VISTA (0x0600)
Windows Server 2003 with SP1, Windows XP with SP2 _WIN32_WINNT_WS03  (0x0502)
Windows Server 2003, Windows XP                   _WIN32_WINNT_WINXP (0x0501)
Windows 2000                                      _WIN32_WINNT_WIN2K (0x0500)
Т.е. если вы не собираетесь поддерживать системы ниже Windows XP (SP2), то можете смело писать что-то в этом духе
#define _WIN32_WINNT _WIN32_WINNT_WS03
Причем это вовсе не означает, что если вы использовали эту константу, то программа под более старые версии не будет работать. Это просто означает, что компилятор будет генерировать ошибку при попытке использования новых функций Windows API, а программа сможете работать везде, где она найдет нужные ей функции, т.е. можно написать так, что и под Windows 95 у вас успешно все запустится (чтобы у вас не стояло в #define). Эта возможность позволяет сидя под Windows 7, быть уверенным, что вы не задействовали ничего такого, чего бы не было бы в Windows XP.

  Ответить  
 
 автор: asker++   (02.02.2012 в 13:49)   письмо автору
 
   для: cheops   (02.02.2012 в 13:37)
 

Спасибо, тогда мне наверное это вообще не надо, так как пишу программы только для себя.

ЗЫ Это получается, что Windows 7 никакая не 7, а 6?

  Ответить  
 
 автор: cheops   (02.02.2012 в 14:41)   письмо автору
 
   для: asker++   (02.02.2012 в 13:49)
 

Ну эти внешние названия довольно условны... и придумываются маркетологами, кстати. Согласитесь, что Windows 7 звучит и выглядит лучше, чем Windows 6... тем более, что во многих культурах число 7 священное, а вот 6 так себе воспринимается...

Что же касается версии ядра, то тут все последовательно, в начале 90-х была версия WinNT 3.51, затем в рамках же Windows NT появилось ядро 4.0, затем в рамках объединения ветки NT и ветки Win9X появился Windows 2000 с ядром 5.0 (для Windows XP версия ядра была 5.1), следующая глобальная смена версии ядра произошла с вводом Windows Vista (6.0), по аналогии с Windows XP в версии ядра Win7, была изменена лишь вторая цифра 6.1.
Все это довольно условно, так как изменения вносятся постоянно, плюс ко всему ядро это еше не вся операционная система.

[поправлено модератором: новый вопрос выделен в новую тему WinAPI: проверка версии Windows]

  Ответить  
Rambler's Top100
вверх

Rambler's Top100 Яндекс.Метрика Яндекс цитирования