#include <stdio.h>
int
add2(int a, int b)
{
return a+b;
}
int
add3(int a, int b, int c)
{
return a+b+c;
}
typedef int (*intfp)();
int
main(int argc, char **argv)
{
int i;
intfp p[2];
p[0] = &add2;
p[1] = &add3;
for(i = 0; i < 2; i++){
printf("%d\n", (*p[i])(2, 3, 5));
}
return 0;
}
- fabian-bros blogja
- A hozzászóláshoz be kell jelentkezni
- 1465 megtekintés
Hozzászólások
Error 1 error C2440: '=' : cannot convert from 'int (__cdecl *)(int,int)' to 'intfp' test.cpp 23
Error 2 error C2440: '=' : cannot convert from 'int (__cdecl *)(int,int,int)' to 'intfp' test.cpp 24
Error 3 error C2197: 'int (__cdecl *)(void)' : too many arguments for call test.cpp 26
- A hozzászóláshoz be kell jelentkezni
Ugye C alatt véletlenül sem C++-t értünk, ahol ez nem igaz?
szerk: ez az egyik dolog, amiben nem visszafelé kompatibilis a C-vel a C++. Ott
type fun() == type fun(void)
--------------------------------------
Unix isn't dead. It just smells funny.
- A hozzászóláshoz be kell jelentkezni
Legalább már ezt is tudjuk.
- A hozzászóláshoz be kell jelentkezni
Es ez meg cLang alatt is igy van. Durva.
--
Ki oda vagyik, hol szall a galamb, elszalasztja a kincset itt alant. | Gentoo Portal
- A hozzászóláshoz be kell jelentkezni
ez nem durva, ez feature. kulonben hogy mukodne a printf() es tsai?!
- A hozzászóláshoz be kell jelentkezni
- A hozzászóláshoz be kell jelentkezni
Én is majdnem beírtam, de látom, hogy megelőztél.
Minden esetre akkor jól emlékeztem, hogy a *printf nem így működik, hanem a '...'+stdarg (va_start+va_arg+va_end) függvénycsoporttal.
-------------------------------------------------------------------------------
Az életben csak egy dolog a szép, de az épp nem jut eszembe.
Slackware Linux 13.37 | 2.6.39.3-janos
- A hozzászóláshoz be kell jelentkezni
De szerinted hogy működnek ezek a "függvények"?
--------------------------------------
Unix isn't dead. It just smells funny.
- A hozzászóláshoz be kell jelentkezni
A változó számú argumentumos függvények? Itt egy példa rá.
-------------------------------------------------------------------------------
Az életben csak egy dolog a szép, de az épp nem jut eszembe.
Slackware Linux 13.37 | 2.6.39.3-janos
- A hozzászóláshoz be kell jelentkezni
köszönöm, láttam már eleget :)
De ezek nem varázsszavak, amik hatására valami csoda történik.
A rádió sem attól működik, hogy bekapcsolod és tekergeted, hanem attól, hogy tranzisztorok vannak benne, meg rezgőkör, meg stb.
--------------------------------------
Unix isn't dead. It just smells funny.
- A hozzászóláshoz be kell jelentkezni
+1 Ezek a va_arg es tarsai csak syntactic sugar arra, hogy a stacket dinamikusan elerd.
- A hozzászóláshoz be kell jelentkezni
+1, köszönöm, hogy valaki ért hozzá.
- A hozzászóláshoz be kell jelentkezni
http://plan9.bell-labs.com/sources/plan9/386/include/u.h
Görgess az aljára. (persze ez csak egyik fele a dolognak)
Ha valaki tud linkelni másik libc-s cuccot, az ne tartsa vissza magát.
--------------------------------------
Unix isn't dead. It just smells funny.
- A hozzászóláshoz be kell jelentkezni
Szerinted ehhez kell-e az, hogy a foo() korlátlan számu paramétert elfogadjon, ami lekerül a stack-re?
- A hozzászóláshoz be kell jelentkezni
Így van, foo()-t alapban semmi nem akadályozza meg abban, hogy galád módon írja/olvassa a stacket.
- A hozzászóláshoz be kell jelentkezni
sub.
-------------------------------------------------------------------------------
Az életben csak egy dolog a szép, de az épp nem jut eszembe.
Slackware Linux 13.37 | 2.6.39.3-janos
- A hozzászóláshoz be kell jelentkezni
+1
- A hozzászóláshoz be kell jelentkezni
Jelzem, hogy az
add2
meghívása három paraméterrel undefined behavior.
ISO C99 6.5.2.2p6
If the expression that denotes the called function has a type that does not include a prototype, the integer promotions are performed on each argument, and arguments that have type float are promoted to double. These are called the default argument promotions. If the number of arguments does not equal the number of parameters, the behavior is undefined. [...]
A
(*p[i])
típusához nem tartozik prototípus (a paraméterek típusa nincs deklarálva az
intfp
-nél). Az argumentumok száma 3, a paraméterek száma 2.
- A hozzászóláshoz be kell jelentkezni
+1
- A hozzászóláshoz be kell jelentkezni
(Rossz gombot nyomtam -- azt akartam mondani, hogy elvileg lehet undefined, gyakorlatilag elvárjuk a fordítótól, hogy ha több paraméter van a kelleténél, akkor ne omoljon össze a világegyetem (még a mi galaxisunk sem), hanem a 'felesleget' a hívott hagyja figyelmen kívül)
- A hozzászóláshoz be kell jelentkezni
akinek ez ujdonsag, az szerintem inkabb ne programozzon c-ben.
kiveve, ha epp a mult heten kezdte el tanulni...
- A hozzászóláshoz be kell jelentkezni
Nekem ez újdonság, de utólagos engedelmeddel programozok tovább.
Ahogy mondani szokás, nem ettől vagyok rossz ember.
- A hozzászóláshoz be kell jelentkezni
FElőlem...
Mindössze annyit jelent,h ogy hiányosak az ismereteid C terén, s ha ez nem volt világos/ismert, akkor nehezen tudom elképzelni, hogy a többi mechanizmussal hogy lehetsz tisztában...
- A hozzászóláshoz be kell jelentkezni
Mert minden C programozó úgy született, hogy oda-vissza tökéletesen ismerte a nyelvet, ugye?
- A hozzászóláshoz be kell jelentkezni
ezt momdtam?
de ez eleg alap.
- A hozzászóláshoz be kell jelentkezni
Hiányosak az ismereteim, mint mindenkié, ahogy a tiéd is. Viszont én nem veszem le senkiről a keresztvizet emiatt még általánosságban se.
Sajnos ennek a szakmának a sajátja egy olyan bitvájár réteg, akit bármikor levehetsz a polcról mint egy "language reference"-t, viszont programozni nem tud. Én igen... azzal több pénzt tudok lapátolni mintha wikipediát játszanék.
- A hozzászóláshoz be kell jelentkezni
hogy jon ide a penz?
egyebkent meg ha nem tudtad, akkor mostmar tudod, viszont arrogans dumaval masnal probalkozz legyszives, nem szeretem mar a parttalan vitakat az arrogans, ki-h-e-nem, mindenben-igazam-van alakokkal.
ugye te nem ilyen vagy?
- A hozzászóláshoz be kell jelentkezni
Inkább hagyjuk! Te nyertél.
- A hozzászóláshoz be kell jelentkezni
ez verseny?
- A hozzászóláshoz be kell jelentkezni
Dehogy verseny, csak rájöttem, hogy már megint meddő vitához hordom a tüzifát. Sajnálom, hogy kevés helyet hagyunk a pozitív gondolatoknak....
- A hozzászóláshoz be kell jelentkezni