Bei Verwendung eines Funktionsnamens ohne "()" wird kein Code generiert
Wenn ein im Programm deklarierter Funktionsname ohne Klammern verwendet wird, generiert der Compiler keinen Code. Dies tritt unabhängig davon auf, ob die Funktion Parameter verwendet, da der Compiler die Funktionsadresse berechnet. Da der Funktionsaufrufoperator "()" jedoch nicht vorhanden ist, wird kein Aufruf durchgeführt. Das Ergebnis sieht ungefähr wie folgt aus:
// compile with /Wall to generate a warning
int a;
a; // no code generated here either
In Visual C++ wird selbst bei Verwendung von Warnstufe 4 keine Diagnoseausgabe generiert. Es wird keine Warnung ausgegeben und kein Code erzeugt.
Der unten aufgeführte Beispielcode wird (mit einer Warnung) kompiliert und führt eine ordnungsgemäße Verknüpfung ohne Fehler aus, generiert jedoch keinen Code, der auf funcn( )
verweist. Damit dies ordnungsgemäß funktioniert, fügen Sie den Funktionsaufrufoperator "()" hinzu.
#include <stdio.h>
void funcn();
int main() {
funcn; /* missing function call operator;
call will fail. Use funcn() */
}
void funcn() {
printf("\nHello World\n");
}
Siehe auch
Feedback
https://aka.ms/ContentUserFeedback.
Bald verfügbar: Im Laufe des Jahres 2024 werden wir GitHub-Issues stufenweise als Feedbackmechanismus für Inhalte abbauen und durch ein neues Feedbacksystem ersetzen. Weitere Informationen finden Sie unterFeedback senden und anzeigen für