О консистентности
Ну ладно, ну вот лично я бы две старших цифры в _MSC_VER занял бы под major версию, а две младших - под minor (сервис-паки, то-се), ну ладно, пусть будет два макроса.
Опять-таки, ладно, что MS Visual C++ 2008 это на самом деле Visual C++ 9.0, а _MSC_VER у него 1500. Ну логично же, да?
Но покажите мне пожалуйста табличку в официальной документации (на MSDN, например), где были бы перечислены версии компиляторов и против каждой версии было бы написано значение _MSC_VER и прочих макросов, важных для определения версии компилятора. blogs.msdn и social.msdn не принимаются, я хочу именно что документацию
А если эта табличка там есть (я не нашел), то какой осмысленный запрос надо вфигачить в поиск по MSDN, чтобы искомый документ оказался в первой тройке.
P.S. Нет, я не привередничаю. OpenMP в нужном мне виде правильно работает в VC++ 2010 и в 2008SP1, я и хочу чтобы оно собиралось бы с OpenMP на вышеуказанных версиях, а на более старых - и не думало бы. Аналогичный случай имеется с C++ TR1, который, вроде бы, человеческим тоже стал в 2008SP1.
P.P.S. В blogs.msdn.com, в каментах, сотрудник MS пишет что надо делать вот так:
cout << "This is VC9 RTM or above." << endl;
#endif
#if defined(_MSC_VER) && (_MSC_FULL_VER > 150030729 || _MSC_FULL_VER == 150030729 && _MSC_BUILD >= 1)
cout << "This is VC9 SP1 or above." << endl;
#endif
Comments
Какие классные волшебные константы. Прямо хоть сейчас в <lj
Какие классные волшебные константы. Прямо хоть сейчас в <lj user=code-wtf> :)
Посмотрел на это сообщество, понял что половину шуток тамошн
Посмотрел на это сообщество, понял что половину шуток тамошних просто не понимаю. Старею, наверное.
кстати, у тебя в бложике вышестоящий коммент криво скопирова
кстати, у тебя в бложике вышестоящий коммент криво скопировался
Патамучта <lj> - это не HTML-тег, а хрень какая-то.
Патамучта <lj> - это не HTML-тег, а хрень какая-то.
P.S. Нет, я не привередничаю.
P.S. Нет, я не привередничаю. OpenMP в нужном мне виде правильно работает в VC++ 2010 и в 2008SP1
А что не так с OpenMP в VS2005? Или не используете его?
У меня просто софтина(библиотека) билдится под VS 2005/2008/2010, с OpenMP.
Да я не помню на самом деле,
Да я не помню на самом деле, на 2008 RTM тестировал очень давно, кажется оно просто банально не собирается (ну и неудивительно, я прошу OpenMP 2.5+, а в 2008-м 2.0).
Подниму VM со старым VC2008 - расскажу подробнее.
Раскопки в почте показали: 1)
Раскопки в почте показали:
1) VS2005 не понимала firstprivate, отчего OpenMP была запрещена для всех Visual C++ (2010-го тогда не было).
Тогда же проверялось на 2008-м, но "по бумаге" - нужно OpenMP 2.5, у 2008-го по бумагам 2.0, до свидания.
2) Потом появился 2010-й и там firstprivate заработала и было разрешено. В 2008 тоже это место компилируется без проблем, проверил.
3) Но есть свежий багрепорт, что VS2008+openmp - в SP1 все работает, а в RTM "имеются проблемы" без описания проблем.
По третьему пункту - выясняю, подозреваю что это как с OpenMP на маках - в single threaded app работает, а -pthread + OpenMP - источник траблов. Но опять же на маках обновился компилятор недавно, надо проверять.
И вот что мне отвечают: It's
И вот что мне отвечают:
It's a problem using code managed by OpenMP and running in a separated thread through QThread from Qt4 API. in digiKam libraw code run in spearated thread to not block GUI. I can see the same problem with new version of libpgf.
С 2008RTM проблема есть, с 2008SP1 и 20010 - нет.
Сам - ну не так, чтобы хрен проверишь, но здоровье дороже.
ясно
ясно