Mit void-Funktionen ohne parameter?
In C++ mit void
in eine Funktion ohne parameter, zum Beispiel:
class WinMessage
{
public:
BOOL Translate(void);
};
ist überflüssig, Sie könnten genauso gut schreiben Translate();
.
Ich mich in der Regel enthalten, da es ein bisschen hilfreich bei der code-Vervollständigung Unterstützung von IDEs, die Anzeige einer void
, denn es garantiert mir, dass die Funktion nimmt definitiv keine parameter.
Meine Frage ist, Ist das hinzufügen von void
parameter-weniger Funktionen eine gute Praxis? Sollte es ermutigt werden, in modernen code?
Es ist ein Kater aus der C
habe einen Kater von C." Mhmm. Scheint zu passen.
Hier ist der Link, der helfen könnte, stackoverflow.com/questions/7412274/...
habe einen Kater von C." Mhmm. Scheint zu passen.
:)
Hier ist der Link, der helfen könnte, stackoverflow.com/questions/7412274/...
InformationsquelleAutor ApprenticeHacker | 2012-03-03
Du musst angemeldet sein, um einen Kommentar abzugeben.
In C++
ist identisch zu:
Die Tatsache, dass der erste Stil kann man noch immer rechtlich schriftliche zugeschrieben werden können, C.
n3290 § C. 1.7 (C++, ISO C-Kompatibilität) Staaten:
In C, es ist sinnvoll, zu vermeiden, dass unerwünscht "unbekannt" bedeutet. In C++, es ist überflüssig.
Kurze Antwort: in C++ es ist ein Kater von zu viel C-Programmierung. Das bringt es in die "Mach es nicht, es sei denn, Sie haben wirklich zu" Halterung für C++ in meinen Augen.
int f()
in C++? Sollte ichexternal "C"
für diesen Anwendungsfall?warum wollen Sie das tun? Es ist Undefiniertes Verhalten, wenn man Sie falsch und ein älterer Kater aus der frühen C Tage zu reduzieren compiler/linker Komplexität. In C++11 variadic templates sind eine sichere, moderne Funktion, aber nicht eine direkte Entsprechung.
Ich habe Sie als Typ für eine Funktion Zeiger-array. Wir tauschten array von Zeigern zwischen client und dll-code, und vermeidet so den overhead für den Aufruf von dll-Funktionen ständig.
Wenn Sie möchten, dass eine bestimmte Plattform gebunden, dann würd ich nur machen es ein array von
FARPROC
und cast für Anrufe.Ich kann nicht finden, nach einer schnellen und einfachen Suche, wenn FARPROC ist definiert durch den standard. Ich bin mit C89 im embedded-Geräte, ich glaube nicht, dass ich davon abhängen, FARPROC definiert. By the way, was ist FARPROC definition? Ich Wette, es ist
int f()
odervoid *f()
.InformationsquelleAutor Flexo
Ich sehe absolut keinen Grund dafür. IDEs wird nur komplett der Aufruf mit einer leeren Liste von Argumenten, und 4 Zeichen weniger.
Ich persönlich glaube, dies macht die bereits ausführlich C++ auch mehr Informationen. Es gibt keine version der Sprache, die ich bin mir dessen bewusst, das erfordert die Verwendung von
void
hier.:)
InformationsquelleAutor rubenvb
Ich denke, es wird nur helfen, im rückwärts-Kompatibilität mit älteren C-code, sonst ist es überflüssig.
InformationsquelleAutor Ghasan
Ich Lust Nein. Gründe:
BOOL Translate()
form, so dass andere Lesen Ihr code wird noch komfortabler und produktiver.foo(void)
bedeuten?"InformationsquelleAutor Bingo
Nur als Randbemerkung. Ein weiterer Grund für nicht einschließlich die leere ist, dass die software, wie starUML, die können Lesen von code und generieren von Klassendiagrammen, Lesen Sie die void als parameter. Auch wenn dies vielleicht ein Fehler in der UML-Generierung software, es ist immer noch ärgerlich zu müssen, gehen Sie zurück und entfernen Sie die "void"s, wenn Sie möchten, zu reinigen Diagramme
InformationsquelleAutor CoderXXX