inline frage!
-
Hi,
wenn ich sowas mache:
// x.h inline void foo (char *x); // cpp.h inline void foo (char *x) { // mach was }
ist dann die funktion bei der benutzung noch inline? oder nicht?
-
inliner schrieb:
wenn ich sowas mache:
// x.h inline void foo (char *x); // cpp.h inline void foo (char *x) { // mach was }
ist dann die funktion bei der benutzung noch inline? oder nicht?
Eine Funktion kann nur dort inline-expandiert werden, wo ihre *Definition* sichtabr ist. Das ist der Grund, warum inline-Funktionen normalerweise in Headern definiert werden.
Wenn du in foo.cpp nur x.h, nicht aber cpp.h einbindest, kann in foo.cpp foo nicht inline-expandiert werden.
In diesem Fall brauchst du eine out-of-line Definition von foo. Ohne eine solche wirst du einen Linkerfehler erhalten.