Защита от препроцессора
От: sakhnik Украина http://koresha.org/sakhnik
Дата: 31.05.05 08:18
Оценка:
Господа!
Как защитить кусок кода от препроцессора? Дело в том, что кое-кто (не будем тыкать пальцами) определяет макрос
#define min(a, b) ((a)<(b) ? (a) : (b))
,
который делает невозможным вызов функции STL
template<typename T> T& std::min(T& a, T& b);

в тексте программы.

Жизнь — это чудо! Только вперёд: sakhnik@jabber.kiev.ua
Re: Защита от препроцессора
От: Vamp Россия  
Дата: 31.05.05 08:20
Оценка: 4 (1)
#undef min

в stdafx.h
Да здравствует мыло душистое и веревка пушистая.
Re[2]: Защита от препроцессора
От: valker  
Дата: 31.05.05 08:23
Оценка: 3 (1)
Здравствуйте, Vamp, Вы писали:

V>
#undef min

V>в stdafx.h

перед включением стандартных заголовков

#define NOMINMAX
Как использовать функции min/max вместо макросов min/max?
От: Bell Россия  
Дата: 31.05.05 08:25
Оценка: 7 (2)
#Имя: FAQ.cpp.nominmax
Здравствуйте, sakhnik, Вы писали:

S>Господа!

S>Как защитить кусок кода от препроцессора? Дело в том, что кое-кто (не будем тыкать пальцами) определяет макрос
#define min(a, b) ((a)<(b) ? (a) : (b))
,
S>который делает невозможным вызов функции STL
template<typename T> T& std::min(T& a, T& b);

S>в тексте программы.

1.
#define NOMINMAX
#include <windows.h>


2.
int min = (std::min)(1, 2);
Любите книгу — источник знаний (с) М.Горький
Re: Защита от препроцессора
От: Кодт Россия  
Дата: 31.05.05 08:26
Оценка: 11 (3)
Здравствуйте, sakhnik, Вы писали:

Поиск (min max windows.h) подсказал:
http://www.rsdn.ru/Forum/?mid=1122489
Автор: korzhik
Дата: 13.04.05
— вместо min(x,y) писать (min)(x,y) — это останавливает препроцессор
http://www.rsdn.ru/Forum/?mid=646934
Автор: korzhik
Дата: 19.05.04
— #define NOMINMAX перед #include <windows.h> — это отключит определение макросов min,max
Перекуём баги на фичи!
Re: Защита от препроцессора
От: crackoff Россия  
Дата: 31.05.05 08:29
Оценка:
Здравствуйте, sakhnik, Вы писали:

S>Господа!

S>Как защитить кусок кода от препроцессора? Дело в том, что кое-кто (не будем тыкать пальцами) определяет макрос
S>
#define min(a, b) ((a)<(b) ? (a) : (b))
,

S>который делает невозможным вызов функции STL
S>
template<typename T> T& std::min(T& a, T& b);

S>в тексте программы.


http://rsdn.ru/Forum/Message.aspx?mid=1122489&amp;only=1
Автор: korzhik
Дата: 13.04.05
... << RSDN@Home 1.1.4 beta 6a rev. 436> <под silent>>
 
Подождите ...
Wait...
Пока на собственное сообщение не было ответов, его можно удалить.