Вот такой макрос: Код (Text): #include <iostream> #define SHOW(a, ...) std::cout << a << std::endl int main() { SHOW("Preved", "Medved"); return 0; } Как внутри макроса перебрать все остальные параметры?
вообще использовать макрос с переменным числом параметров - это зло) и, насколько я помню, стандартом не позволено.
это gcc? никак, вроде. То же самое ... в теле макроса, кажется, подставляет все параметры, ни то через пробелы, ни то через запятые..
Это недокументированная возможность компилятора. По-видимому, работать с такими параметрами нужно так же, как и в обычных функциях с переменным числом параметром (макросы va_). Хотя использовать эту возможность не нужно, потому что она не поддерживается никем из остальных компиляторов. Более того, в MSDN она не описана и в исходниках RTL ни разу не используется.
maxdiver Вполне документированная. см. "Variadic macros" в MSDN. Кстати, в С99 такие макросы легализованы.
Great Ну почти попал в цель: оказывается, там надо писать __VA_ARGS__ green Прикольно, а я не смог ничего найти. Странно, ссылочку в конце страницы "Macros" не заметил Действительно, вполне даже документированно, но совершенно непереносимо. Открыл Стандарт C++ 2003. Ничего подобного там не нашёл. Странно.
Great Шестерка и стандарт это два совершенно несовместимых понятий. RedLord Это-то понятно, но речь все же шла о С++