The OpenNET Project / Index page

[ новости /+++ | форум | теги | ]

форумы  помощь  поиск  регистрация  майллист  ВХОД  слежка  RSS
"Optional parameters. C"
Вариант для распечатки  
Пред. тема | След. тема 
Форумы Программирование под UNIX (Public)
Изначальное сообщение [Проследить за развитием треда]

"Optional parameters. C"  
Сообщение от psi (ok) on 20-Апр-07, 14:22 
[Д|б]одрого времени суток, столкнулся со следующая проблемой:
имеется функция:

phis_init( int *flags)

Необходимо добавить новый параметер:

phis_init (int *flags, char *path)
                            
при этом параметер path может либо присутсвовать либо отсутствовать в вызове функции. Возможно ли это сделать ? Если да, то как ?

Заранее благодарен,
Vic.

Высказать мнение | Ответить | Правка | Наверх | Cообщить модератору

 Оглавление

Сообщения по теме [Сортировка по времени, UBB]


1. "Optional parameters. C"  
Сообщение от vic (??) on 20-Апр-07, 14:39 
>[Д|б]одрого времени суток, столкнулся со следующая проблемой:
>имеется функция:
>
>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 буквы) :)

Высказать мнение | Ответить | Правка | Наверх | Cообщить модератору

3. "Optional parameters. C"  
Сообщение от psi (ok) on 20-Апр-07, 18:35 
>>[Д|б]одрого времени суток, столкнулся со следующая проблемой:
>>имеется функция:
>>
>>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.

Высказать мнение | Ответить | Правка | Наверх | Cообщить модератору

4. "Optional parameters. C"  
Сообщение от Bob (??) on 25-Апр-07, 12:48 
>>[Д|б]одрого времени суток, столкнулся со следующая проблемой:
>>имеется функция:
>>
>>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);
>
>в С никак или через одно место.

А что, функции с переменным числом параметров уже отменили?

Высказать мнение | Ответить | Правка | Наверх | Cообщить модератору

5. "Optional parameters. C"  
Сообщение от vic (??) on 25-Апр-07, 13:56 
>>>[Д|б]одрого времени суток, столкнулся со следующая проблемой:
>>>имеется функция:
>>>
>>>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);
>>
>>в С никак или через одно место.
>
>А что, функции с переменным числом параметров уже отменили?

да нет, но тогда первый параметр должен так же нести инфу о количестве и типе остальных, а в данном случае он возможно несет совсем иную инфу...

Автор имеет проблему с кодом полученным в наследство, переписывать все или не имеет возможности или желания.

Высказать мнение | Ответить | Правка | Наверх | Cообщить модератору

6. "Optional parameters. C"  
Сообщение от perece on 25-Апр-07, 14:59 
>>>в С никак или через одно место.
>>
>>А что, функции с переменным числом параметров уже отменили?
>
>да нет, но тогда первый параметр должен так же нести инфу о
>количестве и типе остальных, а в данном случае он возможно несет
>совсем иную инфу...
>
>Автор имеет проблему с кодом полученным в наследство, переписывать все или не
>имеет возможности или желания.
а
#define phis_init(arg) real_phis_init(arg,NULL)
ему не подойдет?

\^P^/

Высказать мнение | Ответить | Правка | Наверх | Cообщить модератору

7. "Optional parameters. C"  
Сообщение от vic (??) on 25-Апр-07, 15:19 
>>>>в С никак или через одно место.
>>>
>>>А что, функции с переменным числом параметров уже отменили?
>>
>>да нет, но тогда первый параметр должен так же нести инфу о
>>количестве и типе остальных, а в данном случае он возможно несет
>>совсем иную инфу...
>>
>>Автор имеет проблему с кодом полученным в наследство, переписывать все или не
>>имеет возможности или желания.

>#define phis_init(arg) real_phis_init(arg,NULL)
>ему не подойдет?
>
>\^P^/

т.к. дефайны это зло :)))))), то это то самое одно место ;)

Высказать мнение | Ответить | Правка | Наверх | Cообщить модератору

8. "Optional parameters. C"  
Сообщение от vic (??) on 25-Апр-07, 16:10 
>>а
>>#define phis_init(arg) real_phis_init(arg,NULL)
>>ему не подойдет?
>>
>>\^P^/
>
>т.к. дефайны это зло :)))))), то это то самое одно место ;)
>

кстати, не катит он автору, т.к. нужна функция с одним названием, но с разным кол-вом аргументов, а не две функции. Две функции и без дефайна написать можно.

p.s. inline phis_init(arg) { real_phis_init(arg, NULL) };

Высказать мнение | Ответить | Правка | Наверх | Cообщить модератору

9. "Optional parameters. C"  
Сообщение от perece on 25-Апр-07, 18:30 
>>>а
>>>#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^/

Высказать мнение | Ответить | Правка | Наверх | Cообщить модератору

2. "Optional parameters. C"  
Сообщение от FarID (??) on 20-Апр-07, 15:07 
>[Д|б]одрого времени суток, столкнулся со следующая проблемой:
>имеется функция:
>
>phis_init( int *flags)
>
>Необходимо добавить новый параметер:
>
>phis_init (int *flags, char *path)
>
>при этом параметер path может либо присутсвовать либо отсутствовать в вызове функции.
>Возможно ли это сделать ? Если да, то как ?
>
>Заранее благодарен,
>Vic.

можно использовать implicit function declaration
например реализовать функцию в отдельном объектнике не включяя описание фукции как таковой

Высказать мнение | Ответить | Правка | Наверх | Cообщить модератору

Архив | Удалить

Индекс форумов | Темы | Пред. тема | След. тема
Оцените тред (1=ужас, 5=супер)? [ 1 | 2 | 3 | 4 | 5 ] [Рекомендовать для помещения в FAQ]




Партнёры:
PostgresPro
Inferno Solutions
Hosting by Hoster.ru
Хостинг:

Закладки на сайте
Проследить за страницей
Created 1996-2025 by Maxim Chirkov
Добавить, Поддержать, Вебмастеру