Модераторы: Daevaorn
  

Поиск:

Ответ в темуСоздание новой темы Создание опроса
> Злостный макрос из WinDef.h, Конфликтует с std::limits 
V
    Опции темы
azesmcar
Дата 7.10.2009, 12:38 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


uploading...
****


Профиль
Группа: Участник Клуба
Сообщений: 6291
Регистрация: 12.11.2004
Где: Армения

Репутация: 81
Всего: 211



Добрый день,

вот такой вот с виду безобидный код выдает ошибку
Код

int ushort_max = std::numeric_limits<unsigned short>::max();

жалуется что недостаточно аргументов передал макросу max. Оказалось что в WinDef.h (который мне скорее всего boost заинклудил) объявлен макрос max который и мешает спокойно жить. Может кто-то встречался с этим? Как решали? На данный момент добавил
Код

#ifdef max
#undef max
#endif

но не нравится...что делать?
PM   Вверх
dumb
Дата 7.10.2009, 12:47 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


sceloglauxalbifacies
****


Профиль
Группа: Экс. модератор
Сообщений: 2929
Регистрация: 16.6.2006

Репутация: 8
Всего: 158



можно еще #define NOMINMAX перед инклудами, или посмотреть, в каких условиях он "сам включается"
PM MAIL   Вверх
azesmcar
Дата 7.10.2009, 12:53 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


uploading...
****


Профиль
Группа: Участник Клуба
Сообщений: 6291
Регистрация: 12.11.2004
Где: Армения

Репутация: 81
Всего: 211



dumb

В принципе это вариант, но в MSDN об этом ни слова (или я плохо искал). Есть какие-либо теоретические гарантии что это всегда будет работать?


Это сообщение отредактировал(а) azesmcar - 7.10.2009, 12:53
PM   Вверх
SenkraD
Дата 7.10.2009, 13:47 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 933
Регистрация: 3.2.2006
Где: Украина::Киев

Репутация: 2
Всего: 23



azesmcar, единственное что могу сказать:
   - pqxx и otl пишут что нужно испоьзовать NOMINMAX
   - на официальных каналах microsoft ничего против или за не сказано
   - в некоторых приммерах с MSDN они сами его используют


--------------------
 Имеющий язык - да не убоится спросить! 
user posted image
PM MAIL ICQ   Вверх
kemiisto
Дата 7.10.2009, 13:50 (ссылка)    | (голосов:3) Загрузка ... Загрузка ... Быстрая цитата Цитата


Дикий Кот. =^.^=
****
Награды: 1



Профиль
Группа: Участник Клуба
Сообщений: 3292
Регистрация: 29.7.2007

Репутация: 2
Всего: 160



Цитата(SenkraD @  7.10.2009,  14:47 Найти цитируемый пост)
- pqxx и otl пишут что нужно испоьзовать NOMINMAX

Ещё ребята из проекта Eigen тоже рекомендуют #define NOMINMAX. smile 

А проблема... сами знаете в чём. smile 


--------------------
PM MAIL WWW GTalk Jabber   Вверх
azesmcar
Дата 7.10.2009, 13:57 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


uploading...
****


Профиль
Группа: Участник Клуба
Сообщений: 6291
Регистрация: 12.11.2004
Где: Армения

Репутация: 81
Всего: 211



Цитата(kemiisto @  7.10.2009,  13:50 Найти цитируемый пост)
А проблема... сами знаете в чём. smile  

Проблем в микрософте что они мало того что ненужные макросы пишут еще и min и max называют.

Цитата(SenkraD @  7.10.2009,  13:47 Найти цитируемый пост)
azesmcar, единственное что могу сказать:
   - pqxx и otl пишут что нужно испоьзовать NOMINMAX
   - на официальных каналах microsoft ничего против или за не сказано
   - в некоторых приммерах с MSDN они сами его используют

я тоже на официальных каналах ничего не нашел..ладно, хрен с ними, поставил NOMINMAX.

Всем спасибо, тема закрыта.
PM   Вверх
kemiisto
Дата 7.10.2009, 14:03 (ссылка)   | (голосов:4) Загрузка ... Загрузка ... Быстрая цитата Цитата


Дикий Кот. =^.^=
****
Награды: 1



Профиль
Группа: Участник Клуба
Сообщений: 3292
Регистрация: 29.7.2007

Репутация: 2
Всего: 160



Цитата(azesmcar @  7.10.2009,  14:57 Найти цитируемый пост)
Проблем в микрософте что они мало того что ненужные макросы пишут еще и min и max называют.

Проблема в головах, у некоторых. "С++ мощный, так как предоставляет неичерпаемую свободу программисту". Вот ребята из MS и воспользовались. А что? Всё, что не запрещено, разрешено. 

Проблема в отсутствии модульности в языке и убдлюдочно-неудачной попытке реализации этой концепции с использованием заголовочных файлов. Что в свою очередь приводит к необходимости включения в язык препроцессора. Не менее убдлюдочной концепции.  smile 

Но основная проблема в головах...

Это сообщение отредактировал(а) kemiisto - 7.10.2009, 14:03


--------------------
PM MAIL WWW GTalk Jabber   Вверх
Earnest
Дата 7.10.2009, 14:12 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


Профиль
Группа: Экс. модератор
Сообщений: 5962
Регистрация: 17.6.2005
Где: Рязань

Репутация: 53
Всего: 183



Цитата(kemiisto @  7.10.2009,  15:03 Найти цитируемый пост)
Проблема в головах, у некоторых.

Не надо зря наезжать на микрософт. Этим макросам лет примерно столько же, сколько С (даже не С++), и представляете сколько кода их использует? А бусту и прочим std без году неделя. Просто взять и выкинуть нельзя. Совместимость, однако. А вот новый код приходится писать с оглядкой. #undef - нормалное решение, сама так делаю. Но тоже может быть проблема, если использовать библиотеки, которые используют эти макросы... Но как-то всегда решается.



--------------------
...
PM   Вверх
azesmcar
Дата 7.10.2009, 14:13 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


uploading...
****


Профиль
Группа: Участник Клуба
Сообщений: 6291
Регистрация: 12.11.2004
Где: Армения

Репутация: 81
Всего: 211



Цитата(kemiisto @  7.10.2009,  14:03 Найти цитируемый пост)

Проблема в головах, у некоторых. "С++ мощный, так как предоставляет неичерпаемую свободу программисту". Вот ребята из MS и воспользовались. А что? Всё, что не запрещено, разрешено. 

Ага, сморкаться в буфете тоже не запрещено.
PM   Вверх
kemiisto
  Дата 7.10.2009, 14:28 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Дикий Кот. =^.^=
****
Награды: 1



Профиль
Группа: Участник Клуба
Сообщений: 3292
Регистрация: 29.7.2007

Репутация: 2
Всего: 160



Цитата(Earnest @  7.10.2009,  15:12 Найти цитируемый пост)
Не надо зря наезжать на микрософт. 

Я и не наезжаю. Я о другом...

Цитата(Earnest @  7.10.2009,  15:12 Найти цитируемый пост)
Этим макросам лет примерно столько же, сколько С (даже не С++), и представляете сколько кода их использует? А бусту и прочим std без году неделя. Просто взять и выкинуть нельзя. Совместимость, однако. 

Earnest, я, собственно, о том же. Если бы язык С++ проектировался, то стало бы понятно, что столь мощное (безусловно мощное) средство как препроцессор принесёт со временем море ппоблем. В том числе и проблему - предмет нашего обсуждения. Но... С++ писался "на коленках". За что боролись, что называется. smile 

Цитата(Earnest @  7.10.2009,  15:12 Найти цитируемый пост)
сама так делаю

Приятно удивлён родом определительного местоимения. smile 


--------------------
PM MAIL WWW GTalk Jabber   Вверх
Earnest
Дата 8.10.2009, 07:41 (ссылка) |  (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


Профиль
Группа: Экс. модератор
Сообщений: 5962
Регистрация: 17.6.2005
Где: Рязань

Репутация: 53
Всего: 183



Цитата(kemiisto @  7.10.2009,  15:28 Найти цитируемый пост)
 Если бы язык С++ проектировался

К сожалению, практика показывает, что все, что тщательно проектируется, имеет мало шансов прижиться. Взять язык АДА, например. Токмо живой, саморазвивающийся организм имеет шанс... С++ в этом смысле показателен. Плюс наследие С, которое еще древнее. Причем, двадцать лет назад о препроцессоре говорили как об очень сильной стороне С. Вот, русский язык тоже пытаются сделать более удобоваримым, и кому это нравится, кроме нескольких дебилов, неспособных освоить грамматику? Так что пишите поэмы на С++ и наслаждайтесь его несовершенством.



--------------------
...
PM   Вверх
  
Ответ в темуСоздание новой темы Создание опроса
Правила форума "С++:Общие вопросы"
Earnest Daevaorn

Добро пожаловать!

  • Черновик стандарта C++ (за октябрь 2005) можно скачать с этого сайта. Прямая ссылка на файл черновика(4.4мб).
  • Черновик стандарта C (за сентябрь 2005) можно скачать с этого сайта. Прямая ссылка на файл черновика (3.4мб).
  • Прежде чем задать вопрос, прочтите это и/или это!
  • Здесь хранится весь мировой запас ссылок на документы, связанные с C++ :)
  • Не брезгуйте пользоваться тегами [code=cpp][/code].
  • Пожалуйста, не просите написать за вас программы в этом разделе - для этого существует "Центр Помощи".
  • C++ FAQ

Если Вам понравилась атмосфера форума, заходите к нам чаще! С уважением, Earnest Daevaorn

 
0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей)
0 Пользователей:
« Предыдущая тема | C/C++: Общие вопросы | Следующая тема »


 




[ Время генерации скрипта: 0.0636 ]   [ Использовано запросов: 22 ]   [ GZIP включён ]


Реклама на сайте     Информационное спонсорство

 
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности     Powered by Invision Power Board(R) 1.3 © 2003  IPS, Inc.