hallo.
habe hier eine main.c mit main() funktion.
die ruft eine funktion f1 aus einer cpp-datei auf.
diese ist natürlich artig in der entsprechenden header-datei mit einem #ifdef __cplusplus als extern „C“ deklariert.
f1 ruft eine weitere cpp-funktion f2 auf, die in derselben cpp-datei definiert ist.
die deklaration von f2 befindet sich NICHT in der header-datei, sondern in der cpp-datei selbst.
beim bauen beschwert sich jetzt der linker, er würde f2 nicht finden („unresolved symbol“).
warum?
die einzige beziehung zwischen main und cpp ist doch der aufruf von f1, d.h. mit welchem symbolnamen f2 compiliert wird, kann der main völlig egal sein.
oder doch nicht?
f2 auch als extern „C“ zu deklarieren scheidet jedenfalls aus, weil diese eine parameterübergabe per referenz macht, was C ja wieder nicht kennt.
natürlich läßt sich das problem mit ein paar modifikationen umschiffen. aber mich würde interessieren, was hier überhaupt das problem ist.
gruß
michael