- Optional parameters. C, vic, 14:39 , 20-Апр-07 (1)
>[Д|б]одрого времени суток, столкнулся со следующая проблемой: >имеется функция: > >phis_init( int *flags) > >Необходимо добавить новый параметер: > >phis_init (int *flags, char *path) > >при этом параметер path может либо присутсвовать либо отсутствовать в вызове функции. >Возможно ли это сделать ? Если да, то как ? > >Заранее благодарен, >Vic. в C++ либо с помощью дефолтового значения: void phis_init(int* flags, char* path = NULL); либо перегрузкой функции: void phis_init(int* flags, char* path); void phis_init(int* flags); в С никак или через одно место. С другой стороны вызов phis_init(&flags, NULL); в случае не нужности второго параметра, разве что слегка напрягает (всего на 4 буквы) :)
- Optional parameters. C, psi, 18:35 , 20-Апр-07 (3)
>>[Д|б]одрого времени суток, столкнулся со следующая проблемой: >>имеется функция: >> >>phis_init( int *flags) >> >>Необходимо добавить новый параметер: >> >>phis_init (int *flags, char *path) >> >>при этом параметер path может либо присутсвовать либо отсутствовать в вызове функции. >>Возможно ли это сделать ? Если да, то как ? >> >>Заранее благодарен, >>Vic. > >в C++ либо с помощью дефолтового значения: >void phis_init(int* flags, char* path = NULL); >либо перегрузкой функции: >void phis_init(int* flags, char* path); >void phis_init(int* flags); > >в С никак или через одно место. >С другой стороны вызов phis_init(&flags, NULL); в случае не нужности второго параметра, >разве что слегка напрягает (всего на 4 буквы) :) Спасибо за ответ. Дело не в том что напрягает, дело в том что вызов call phis_init(INIT)
используется на протяжении многих лет и во многих программах (((. Best regards, Vic. - Optional parameters. C, Bob, 12:48 , 25-Апр-07 (4)
>>[Д|б]одрого времени суток, столкнулся со следующая проблемой: >>имеется функция: >> >>phis_init( int *flags) >> >>Необходимо добавить новый параметер: >> >>phis_init (int *flags, char *path) >> >>при этом параметер path может либо присутсвовать либо отсутствовать в вызове функции. >>Возможно ли это сделать ? Если да, то как ? >> >>Заранее благодарен, >>Vic. > >в C++ либо с помощью дефолтового значения: >void phis_init(int* flags, char* path = NULL); >либо перегрузкой функции: >void phis_init(int* flags, char* path); >void phis_init(int* flags); > >в С никак или через одно место. А что, функции с переменным числом параметров уже отменили?
- Optional parameters. C, vic, 13:56 , 25-Апр-07 (5)
>>>[Д|б]одрого времени суток, столкнулся со следующая проблемой: >>>имеется функция: >>> >>>phis_init( int *flags) >>> >>>Необходимо добавить новый параметер: >>> >>>phis_init (int *flags, char *path) >>> >>>при этом параметер path может либо присутсвовать либо отсутствовать в вызове функции. >>>Возможно ли это сделать ? Если да, то как ? >>> >>>Заранее благодарен, >>>Vic. >> >>в C++ либо с помощью дефолтового значения: >>void phis_init(int* flags, char* path = NULL); >>либо перегрузкой функции: >>void phis_init(int* flags, char* path); >>void phis_init(int* flags); >> >>в С никак или через одно место. > >А что, функции с переменным числом параметров уже отменили? да нет, но тогда первый параметр должен так же нести инфу о количестве и типе остальных, а в данном случае он возможно несет совсем иную инфу... Автор имеет проблему с кодом полученным в наследство, переписывать все или не имеет возможности или желания.
- Optional parameters. C, perece, 14:59 , 25-Апр-07 (6)
>>>в С никак или через одно место. >> >>А что, функции с переменным числом параметров уже отменили? > >да нет, но тогда первый параметр должен так же нести инфу о >количестве и типе остальных, а в данном случае он возможно несет >совсем иную инфу... > >Автор имеет проблему с кодом полученным в наследство, переписывать все или не >имеет возможности или желания. а #define phis_init(arg) real_phis_init(arg,NULL) ему не подойдет?\^P^/
- Optional parameters. C, vic, 15:19 , 25-Апр-07 (7)
>>>>в С никак или через одно место. >>> >>>А что, функции с переменным числом параметров уже отменили? >> >>да нет, но тогда первый параметр должен так же нести инфу о >>количестве и типе остальных, а в данном случае он возможно несет >>совсем иную инфу... >> >>Автор имеет проблему с кодом полученным в наследство, переписывать все или не >>имеет возможности или желания. >а >#define phis_init(arg) real_phis_init(arg,NULL) >ему не подойдет? > >\^P^/ т.к. дефайны это зло :)))))), то это то самое одно место ;)
- Optional parameters. C, vic, 16:10 , 25-Апр-07 (8)
>>а >>#define phis_init(arg) real_phis_init(arg,NULL) >>ему не подойдет? >> >>\^P^/ > >т.к. дефайны это зло :)))))), то это то самое одно место ;) >кстати, не катит он автору, т.к. нужна функция с одним названием, но с разным кол-вом аргументов, а не две функции. Две функции и без дефайна написать можно. p.s. inline phis_init(arg) { real_phis_init(arg, NULL) };
- Optional parameters. C, perece, 18:30 , 25-Апр-07 (9)
>>>а >>>#define phis_init(arg) real_phis_init(arg,NULL) >>>ему не подойдет? >>> >>>\^P^/ >> >>т.к. дефайны это зло :)))))), то это то самое одно место ;) кто сказал? в таком случае темплиты C++ - зло еще большее. > >кстати, не катит он автору, т.к. нужна функция с одним названием, но >с разным кол-вом аргументов, а не две функции. Две функции и >без дефайна написать можно. > >p.s. inline phis_init(arg) { real_phis_init(arg, NULL) }; я так понял, что есть уйма кода, в котором неохота разбираться, где phis_init вызывается с одним аргументом. и нужно в некоторых местах подправить, передав еще один аргумент. я так понимэ, что в этих самых "некоторых местах" он разобрался все равно, раз вызов меняется (добавляется арг) так в чем проблема поменять имя в этих самых местах? функция-обертка проканает тоже. но я бы предпочел #define. (let's start yet another holy war, huh?)\^P^/
- Optional parameters. C, FarID, 15:07 , 20-Апр-07 (2)
>[Д|б]одрого времени суток, столкнулся со следующая проблемой: >имеется функция: > >phis_init( int *flags) > >Необходимо добавить новый параметер: > >phis_init (int *flags, char *path) > >при этом параметер path может либо присутсвовать либо отсутствовать в вызове функции. >Возможно ли это сделать ? Если да, то как ? > >Заранее благодарен, >Vic. можно использовать implicit function declaration например реализовать функцию в отдельном объектнике не включяя описание фукции как таковой
|