[Date Prev][Date Next] [Thread Prev][Thread Next] [Date Index] [Thread Index]

Re: g++ из stable



spied@yandex.ru writes:

> Здравствуйте.
>
> у меня стоят gcc и g++ версии 2.95.4-14
>
> почему-то в g++ не обрабатываются макросы с переменным числом
> параметров
>
> вот пример кода:
> #define a(aaa,...) printf(aaa, __VA_ARGS__)
>                                            
> int main(void) {                           
>  return a("\n%d\n",4);                     
> }                                          
>
> этот код нормально комплируется gcc и третьей версией g++, однако g++
> 2.95 выдает ошибку:
> a.c:1: badly punctuated parameter list in `#define'
>

#define a(aaa, args...) printf(aaa, ## args)


> переход на новую версию g++ нежелателен (так как связан с
> перекомпиляцией динамических библиотек).
>
> можно ли заставить g++ этой версии нормально отрабатывать iso-версию
> макросов с переменным числом параметров? насчет gcc-версии я в курсе,
> но не хочется переделывать программу и терять в портабельности.

А о какой портабельности речь? Я так понимаю, это все GNU extensions.
Советую сюда еще посмотреть, если хотите, чтоб это действительно было
портабельно:

http://www.eskimo.com/~scs/C-faq/q10.26.html

-- 
Mikolaj Golub



Reply to: