Zeiger auf Funktion als Rückgabewert
-
namespace invader schrieb:
Anscheinend eine etwas übertriebene Warnung vom Microsoft-Compiler. Vielleicht geht sie weg, wenn du stattdessen &func returnst (was aber eigentlich nicht notwendig ist).
tolle warnung.
ich schreib nämlich immercout<<time<<endl;
und so nen quatsch. und die warnung sagt mir, daß ich wiedermal die klammern vergessen habe.
-
pointercrash() schrieb:
Eigentlich müßte func den Einsprungvektor auf func() liefern, &func die Adresse, wo der Einsprungvektor liegt.
normalerweise brauchen funktionen keinen 'einsprungvektor', ausser man macht sich selber einen, mit 'nem function pointer.
-
namespace invader hat recht, wenn ich &func zurückgebe, ist die warnung weg.
vllt. liegt es auch daran, das der compiler so alt ist ( autorenversion msvc++ 6.0 )
-
^^is wohl ein bug im msvc. compilierst du als .c oder als .cpp? c und c++ function pointer sind irgendwie nicht das selbe.
-
+fricky schrieb:
^^is wohl ein bug im msvc. compilierst du als .c oder als .cpp? c und c++ function pointer sind irgendwie nicht das selbe.
schätze auch, ist ein bug. ist ne alte version, ohne service packs.
ich habe das als .c compiliert.
-
funcptr schrieb:
schätze auch, ist ein bug. ist ne alte version, ohne service packs.
kein bug. ne warnung.
"warning: Ausdruck wird als Funktion ausgewertet, der eine Argumentliste fehlt"
sagt auf deutsch
"Warnung: Vermutlich hast du dummer N00b die Klammern vergessen"
-
ah, fetschehe!
der 'denkt', das ich die funktion aufrufe.
egal, kann denken was willer der n00b! hauptsache funzt correctly und schon bald kann mein programm in den nahezu unendlichen weiten des www verewigt werdenmfg,
funcptr n00b- nur echt mit zweimal ascii 48
-
volkard schrieb:
kein bug. ne warnung.
Trotzdem ist die Warnung in der Form verwirrend, denn das "fehlt" impliziert, dass dort eine Argumentliste hingehört. Wenn der Compiler nur empfehlen möchte, zur besseren Klarheit einen Adressoperator davorzuschreiben, könnte er das auch so sagen.
Abgesehen davon dürften die meisten (wenn auch nicht alle) vergessenen Argumentlisten ohnehin durch den Typcheck oder "statement with no effect"-Warnungen erschlagen werden.
-
volkard schrieb:
funcptr schrieb:
schätze auch, ist ein bug. ist ne alte version, ohne service packs.
kein bug. ne warnung.
'ne unberechtigte warnung, weil der compiler zwischen 'func' und '&func' unterscheidet. 'adressen von adressen' gibts für C eigentlich nicht.
-
dem msvc 2008 hamse die zicken abgewöhnt, glaub ich.