Ich frage mich, ob einige C/C++ - Compiler etwas Ähnliches zu Pfand Stock Schlüsselwort implementieren.Pawn "Lager" -Funktion Homolog in C/C++
In Pfand, können Sie eine Funktion wie das erklären:
stock xfunc(a, b)
{
[...] // Bla bla
}
Die Aktie Schlüsselwort teilt dem Compiler einfach nicht die Funktion in der kompilierten binären schließen, wenn sie nicht irgendwo im Code genannt wird. Dies macht die Funktion sozusagen fakultativ und erhöht die binäre Größe nicht, wenn sie nicht verwendet wird.
Ich würde es nützlich finden, etwas in C/C++ zu haben, weil ich einige Funktionen einschließen möchte, die ich nicht sofort in den ersten Iterationen meines Programms/Codes verwenden werde. Natürlich könnten mir einige Leute sagen, dass es andere Wege gibt, dies zu tun, wie zum Beispiel Preprozessor-Makros usw. Ich frage nicht nach einem anderen Weg, ich möchte etwas, das mir erlaubt, diese Funktionen später zu nutzen, ohne sie auskommentieren zu müssen, Ändere ein Makro, damit es kompiliert wird usw. (dh nahtlos). ABER ... ohne sie zu kompilieren und dadurch meine ausführbare Datei zu vergrößern, wenn ich sie nicht benutze!
Eine praktische Funktion würde ich sagen. Danke!
P.S. Wenn die Antwort lautet: "Es ist nicht in den Sprachstandards enthalten", gibt es dann Compiler, die das mit bestimmten Pragmas, inoffiziellen Keywords usw. tun?
EDIT: Sollte ich erwähnen, interessiert mich vor allem diese Funktion für die virtuelle Funktion. Ich bin mir bewusst, Funktionsebene Verknüpfung für Standardfunktionen existiert, aber was ist mit virtuellen? Ich denke normalerweise, wenn ich mich nicht irre, werden virtuelle funcs kompiliert, selbst wenn sie nicht verwendet werden, um das Klassenlayout mit einem Klassenprototyp kompatibel zu halten? Kannst du bestätigen? Danke
Dies wird normalerweise automatisch während der Verknüpfungsphase gelöst, c oder C++ braucht kein solches Schlüsselwort. –
imho sobald ich eine Funktion geschrieben habe Ich will, dass es Kompilierfehler so schnell wie möglich zu fangen kompiliert, also würde ich nie Makros oder Kommentare verwenden, um es von der Kompilierung auszuschließen, wie auch immer es nicht in die ausführbare Datei machen wird, wenn es nicht verwendet wird andere) – user463035818
Praktisch * alle * Compiler machen es nahtlos. Dies muss nicht Teil der Sprachstandards sein. Ich verstehe nicht, warum es für den Entwickler an der Tagesordnung sein sollte, eine Funktion wie diese zu kommentieren, wenn der Linker die Entscheidung viel besser treffen könnte. Wenn Sie wissen, dass etwas ungenutzt bleibt, schreiben Sie es einfach nicht. –