Название: замена __VA_ARGS__ Отправлено: Admin от Июнь 30, 2005, 13:00 Возможно ли на Visual C+ заменить данную конструкцию
__VA_ARGS__ тоесть релаизовать примерно следующее #define debug_printf(...) define_strace (DEBUG, __VA_ARGS__) Надо переслать в макрос произвольно количество параметров Название: замена __VA_ARGS__ Отправлено: Admin от Июнь 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 |