Hallo! Ich versuchte eine überladene Funktion zu schreiben:
1 | |
2 | |
3 | |
4 | |
5 | |
6 | |
7 | |
8 | |
9 | |
10 | |
11 | |
12 | |
13 | |
14 | |
15 | |
16 | |
17 | |
Aber der Compiler meckert, das die Funktion schon deklariert ist. Geht das überhaupt? Grüße, Gregor
|
Anzeige
|
Funktionsüberladung in CHallo! Ich versuchte eine überladene Funktion zu schreiben:
Aber der Compiler meckert, das die Funktion schon deklariert ist. Geht das überhaupt? Grüße, Gregor
Gast
#1078035
Nein.
Gast
#1078069
C kennt keine Überladung => Vorteil: ABI ist einfach C++ kennt Überladung, manipuliert aber an dem Namen der Funktion oder anders gesagt, die Information wird im abgeänderten Namen festgehalten void add(int,int) => add_ii void add(double,double) => add_dd je nach ABI, variirt die Abänderung => Linker kann anderen Code dazulinken, weil der Name sich geändert hat. http://en.wikipedia.org/wiki/Name_mangling
Gast
#1078070
Korrektur: Linker kann nicht anderen Code dazulinken, Gregor B. wrote: > Aber der Compiler meckert, das die Funktion schon deklariert ist. Geht > das überhaupt? Ja es geht. Falls deine Toolchain waek-Symbole unterstützt:
Je nachdem, ob FOO defined ist (auf Kommandozeine einmal mit -DFOO übersetzen, einmal ohne) wird 0 oder 1 zurückgeliefert. Mit diesem kann man eine weak Standard-Implementierung einer Funktion zur Verfügung stellen, welche die Applikation überschreiben kann. Was du suchst ist aber wohl varargs, d.h. eine Funktion soll variable Parameteranzahl verdauen können? http://en.wikipedia.org/wiki/Stdarg.h Hi nein, er sucht eine Möglichkeit zwei Funktionen mit gleichem Namen und unterschiedlicher Parameterliste zu definieren die auch beide gleichzeitig verfügbar sind. Und das geht in C nicht. Matthias Matthias Weißer wrote: > Hi > > nein, er sucht eine Möglichkeit zwei Funktionen mit gleichem Namen und > unterschiedlicher Parameterliste zu definieren die auch beide > gleichzeitig verfügbar sind. Und das geht in C nicht. Das was am ehesten daran kommt ist eben varargs. Es wird eine Funktion definiert, der man aber sagen muss, wie die Argumente zu interpretieren sind. Geläufigstes Beispiel für sowas ist printf. Der Formatstring gibt an, wie die (beliebig vielen) nachfolgenden Werte zu interpretieren sind. Mangling/Demangling gibt's in C natürlich nicht. Antwort schreibenBitte melde dich an, um einen Beitrag zu schreiben. |
Anzeige
|