Ich habe vor kurzem eine kleine MCF C++ - Anwendung, die offensichtlich in einem Arbeitszustand ist. Um loszulegen, führe ich PC-Lint über den Code, und Lint beschwert sich, dass CStringT an Format übergeben werden. Die Meinung im Internet scheint geteilt zu sein. Einige sagen, dass CSting entwickelt wurde, um diesen Anwendungsfall ohne Fehler zu behandeln, aber andere (und eine MSDN article) sagen, dass es immer gegossen werden sollte, wenn es an eine Variable Argument-Funktion übergeben wird. Kann Stackoverflow zu einem Konsens über das Problem kommen?Sollte ich einen CString an Format/printf (und Varags im Allgemeinen) übergeben?
1
A
Antwort
3
CString wurde sorgfältig entworfen, um als Teil einer Variablenargumentliste weitergegeben zu werden, so ist es sicher, es auf diese Weise zu verwenden. Und Sie können ziemlich sicher sein, dass Microsoft darauf achten wird, dieses bestimmte Verhalten nicht zu brechen. So würde ich sagen, dass Sie sind sicher, um es weiter so zu verwenden, wenn Sie möchten.
Das sagte, persönlich würde ich die Besetzung bevorzugen.Es ist nicht allgemeines Verhalten, dass String-Klassen so verhalten (zB std :: string nicht) und für mentale Konsistenz ist es vielleicht besser, es auf die "sichere" Art zu tun.
S.S .: Siehe thread für Details zur Implementierung und weitere Hinweise zum Umwandeln.
Verwandte Themen
- 1. Sollte ich .tfstate Dateien an Git übergeben?
- 2. Sollte ich nur öffentliche Schnittstellen in BDD testen? (im Allgemeinen und speziell in Ruby)
- 3. Sollte ich ReSharper 4.5 Beta installieren und Beta VS Plugins im Allgemeinen verwenden
- 4. Sollte ich meine $ mysqli Variable an jede Funktion übergeben?
- 5. OpenCV Linienerkennung im Allgemeinen
- 6. kubernetes und debuggen es im Allgemeinen
- 7. Wie kann ich einen Int in einen CString konvertieren?
- 8. Wie sollte ich eine Std :: String an eine Funktion übergeben?
- 9. Wie sollte ich sensible Umgebungsvariablen an Amazon ECS-Aufgaben übergeben?
- 10. Daten an einen anderen View-Controller im Navigationscontroller übergeben
- 11. Kann ich einen Block an einen Proc übergeben?
- 12. Sollte ich vertrauliche Daten an einen Process.Start-Aufruf in .NET übergeben?
- 13. Übergeben von Eigenschaften an einen Spring-Kontext
- 14. Wie kann ich Parameter an einen RequestHandler übergeben?
- 15. Kann ich Argumente an einen benutzerdefinierten log4net Appender-Konstruktor übergeben?
- 16. Mehrere Parameter an einen Controller übergeben?
- 17. Übergeben von Werten an einen Controller
- 18. Wie konvertiere ich einen CString zu einem Doppel in C++?
- 19. Gibt es einen allgemeinen Objektpool für .NET?
- 20. Assembly - Übergeben von Parametern an einen Funktionsaufruf
- 21. Sollte ich Parameter im Konstruktor validieren?
- 22. Im Allgemeinen bevorzugte Methode für einen "Warte" -Bildschirm mit MVVM und Silverlight
- 23. NSDictionary-Wert an einen NSString übergeben
- 24. übergeben Zeichenfolge an Bool-Funktion
- 25. Magento Zahlungsprozess .. wie es im Allgemeinen funktioniert
- 26. Android: AppWidgetId an einen Dienst übergeben
- 27. So übergeben Sie Daten an einen UITabBarController
- 28. Javascript - Wert an einen Rückruf übergeben
- 29. Wie vermeidet man Speicherlecks? (In diesem Beispiel und im Allgemeinen)
- 30. Zwei Objekte an einen TimerCallback übergeben