prostydent
Гость
|
|
« : 25-12-2008 11:23 » |
|
надо выяснить что такое перегрузка в чистом Си, помогите кто может, очень надо
|
|
|
Записан
|
|
|
|
McZim
|
|
« Ответ #1 : 25-12-2008 11:31 » |
|
перегрузка чего?
|
|
|
Записан
|
The CBO without stats is like a morning without coffee. (c) T.Kyte.
|
|
|
prostydent
Гость
|
|
« Ответ #2 : 25-12-2008 11:40 » |
|
перегрузка операторов и функций, хотя бы что нито
|
|
|
Записан
|
|
|
|
|
prostydent
Гость
|
|
« Ответ #4 : 25-12-2008 11:57 » |
|
да я там был уже, спасибо конечно, но по моему вопросу там есть только лишь в конце, а именно то что в Си перегрузки как таковой нет в отличии от С++, а каков тогда там механизм? как там это делается?(в Си)
|
|
|
Записан
|
|
|
|
Вад
|
|
« Ответ #5 : 25-12-2008 12:00 » |
|
int doSomething(int intArg); int doSomething(float floatArg);
а это чем не перегрузка? всё равно же потом doSomething(argOfSomeType);
|
|
|
Записан
|
|
|
|
McZim
|
|
« Ответ #6 : 25-12-2008 12:07 » |
|
prostydent, скажи, что ты в приведенной ссылке такого углядел что можно в с++, но нельзя в си?
|
|
|
Записан
|
The CBO without stats is like a morning without coffee. (c) T.Kyte.
|
|
|
prostydent
Гость
|
|
« Ответ #7 : 25-12-2008 12:13 » |
|
я прошу прощения, может быть за свою непонятливость, но в чем же ОСНОВНОЕ различие в перегрузке в Си и С++?
McZim, там в конце есть табличка, в которой показано, где есть перегрузка, а где нет
|
|
|
Записан
|
|
|
|
Вад
|
|
« Ответ #8 : 25-12-2008 12:16 » |
|
Давно уже не писал на чистом C (и не писал перегрузку функций) - но там случайно не макросами?
|
|
|
Записан
|
|
|
|
McZim
|
|
« Ответ #9 : 25-12-2008 12:27 » |
|
prostydent, так мы сейчас о чем? О перегрузке функций или о перегрузке операций?
Основное отличие, как сказала педивикия, в том что, в си перегрузки как таковой нет, а с++ есть!
|
|
|
Записан
|
The CBO without stats is like a morning without coffee. (c) T.Kyte.
|
|
|
Вад
|
|
« Ответ #10 : 25-12-2008 12:34 » |
|
Значит так, перегрузки там нет на уровне компилятора. Зато можно учинить на уровне препроцессора int function_int(int arg1, int arg2);
float function_float(float arg1, float arg2);
#define FUNCTION(type, arg1, arg2) \ function_##type(arg1, arg2) неоднократно встречал код, написанный в подобном стиле. Потом: int test = FUNCTION(int, 1, 4); float ftest = FUNCTION(float, 1.0, 4.0);
и всё ОК
|
|
« Последнее редактирование: 25-12-2008 12:41 от Вад »
|
Записан
|
|
|
|
Вад
|
|
« Ответ #11 : 25-12-2008 12:39 » |
|
Вот пример с переменным числом аргументов: int function_1(int arg1); int function_2(int arg1, int arg2); #define FUNCT(arg_count, args_list) \ function_##arg_count##args_list потом int test = 0; int test1 = FUNCT(1, (test)); int test2 = FUNCT(2, (test, test1));
|
|
|
Записан
|
|
|
|
prostydent
Гость
|
|
« Ответ #12 : 25-12-2008 12:44 » |
|
спасибо=)
|
|
|
Записан
|
|
|
|
Ochkarik
|
|
« Ответ #13 : 25-12-2008 17:13 » |
|
Вад, да нет вроде, зачем сразу макросы? на этапе комплияции по входным переменнам можно определить какую из функций подставлять. даже в чистом си.
|
|
|
Записан
|
RTFM уже хоть раз наконец! :[ ну или хотя бы STFW...
|
|
|
|