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:
1 | // Modul 1
|
2 | extern int foo();
|
3 |
|
4 | int __attribute__((weak)) foo()
|
5 | {
|
6 | return 0;
|
7 | }
|
1 | // Modul 2
|
2 | extern int foo();
|
3 |
|
4 | #ifdef FOO
|
5 | int foo()
|
6 | {
|
7 | return 1;
|
8 | }
|
9 | #endif // FOO
|
10 |
|
11 | int main()
|
12 | {
|
13 | return foo();
|
14 | }
|
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