Russian Qt Forum
Ноябрь 22, 2024, 19:24 *
Добро пожаловать, Гость. Пожалуйста, войдите или зарегистрируйтесь.
Вам не пришло письмо с кодом активации?

Войти
 
  Начало   Форум  WIKI (Вики)FAQ Помощь Поиск Войти Регистрация  

Страниц: [1]   Вниз
  Печать  
Автор Тема: замена __VA_ARGS__  (Прочитано 10769 раз)
Admin
Administrator
Джедай : наставник для всех
*****
Offline Offline

Сообщений: 1988



Просмотр профиля
« : Июнь 30, 2005, 13:00 »

Возможно ли на Visual C+ заменить данную конструкцию

__VA_ARGS__

тоесть релаизовать примерно следующее

#define debug_printf(...)   define_strace (DEBUG, __VA_ARGS__)

Надо переслать в макрос произвольно количество параметров
Записан
Admin
Administrator
Джедай : наставник для всех
*****
Offline Offline

Сообщений: 1988



Просмотр профиля
« Ответ #1 : Июнь 30, 2005, 13:21 »

одно из решений что я нешел писать все аргументы в скобке Улыбающийся

Цитировать
Have you tried:

#define MyErrorBox(params) (line = __LINE__, file = __FILE__,
MyErrorBoxInternal(params))


The problem is of course that you have to write:


MyErrorBox((hWnd,text,caption,­flags))


instead of
MyErrorBox(hWnd,text,caption,f­lags)


Another way is to wait for Visual C++ to catch up with C9X and allow for
VA_ARGS in macros:


#define MyErrorBox(...) (line = __LINE__, file = __FILE__, \
MyErrorBoxInternal(__VA_ARGS__­))


Unfortunately we all have to wait a bit for that...Visual C++ 7.x may have it
though.... Until then, try the way above.


Another idea.... Just keep MyErrorBox as a regular function and have a small
simple macro to just set those __LINE__ and __FILE__ values...


int MyErrorBox(int line, const char * file, ...other params...);


#define LF   __LINE__, __FILE__


if (MyErrorBox( LF, .... ) == IDYES)....


int answer = MyErrorBox( LF, ... );


Alf
Записан
Страниц: [1]   Вверх
  Печать  
 
Перейти в:  


Страница сгенерирована за 0.089 секунд. Запросов: 23.