OK, damit hätte ich nicht gerechnet:
die neue Version mit sprintf-Aufrufen für jeden Parameter und für jedes Stück Formatstring zwischen 2 Parametern kostet nur 75% der Zeit, die die alte Version mit nur einem sprintf-Aufruf benötigt hat :shock:
Naja, mir solls recht sein.
Die Suche ergab 467 Treffer
- 04.11.2011, 16:12
- Forum: Programmiersprachen, Quelltext und Bibliotheken
- Thema: write to va_arg standard-konform?
- Antworten: 9
- Zugriffe: 1067
- 04.11.2011, 12:38
- Forum: Programmiersprachen, Quelltext und Bibliotheken
- Thema: write to va_arg standard-konform?
- Antworten: 9
- Zugriffe: 1067
Re: write to va_arg standard-konform?
Hmm, anscheinend ist die einzige Möglichkeit, die Parameter einzeln an mehrere snprintf()-Aufrufe zu übergeben:
http://stackoverflow.com/questions/4535 ... ist-on-gcc
http://stackoverflow.com/questions/4535 ... ist-on-gcc
- 03.11.2011, 22:59
- Forum: Algorithmen und Datenstrukturen
- Thema: Ctor einer Klasse aufrufen, die so heißt wie eine Methode
- Antworten: 28
- Zugriffe: 10891
Re: Ctor einer Klasse aufrufen, die so heißt wie eine Method
Hat sicher seine Reize, leider auch eine viel zu kryptische Syntax. Wenn ich schon sehe, dass manche Typen kleingeschrieben werden und andere komplett groß, dann denk ich mir, next. Also es geht in gewisser Weise in die Richtung, aber ist zu unleserlich für meinen Geschmack. Da ist es in C++ ja noc...
- 03.11.2011, 22:35
- Forum: Programmiersprachen, Quelltext und Bibliotheken
- Thema: write to va_arg standard-konform?
- Antworten: 9
- Zugriffe: 1067
Re: write to va_arg standard-konform?
Ist ein vereinfachtes Beispiel. Im Konkreten Anwendungsfall habe ich eine Library vorliegen, welche fleißig SNWPRINTF nutzt, was unter VS als vsnprintf defineirt ist und unter GCC als vsprintf (GCC vsprintf verhält sich praktisch wie VS vsnprintf, während das VS vsprintf einen Parameter weniger will...
- 03.11.2011, 19:27
- Forum: Programmiersprachen, Quelltext und Bibliotheken
- Thema: write to va_arg standard-konform?
- Antworten: 9
- Zugriffe: 1067
write to va_arg standard-konform?
Folgender Code funzt in VS ohne Probleme: va_arg(argptr, int) = 1000; Clang hingegen meint: "Expression is not assignable". GCC meint: "lvalue required as left operand of assignment". Hier steht nichts davon, ob die Expression nun ein l-value sein muss oder kann oder nicht sein d...
- 03.11.2011, 18:11
- Forum: Algorithmen und Datenstrukturen
- Thema: Ctor einer Klasse aufrufen, die so heißt wie eine Methode
- Antworten: 28
- Zugriffe: 10891
Re: Ctor einer Klasse aufrufen, die so heißt wie eine Method
Tut mir leid. Ich hab mich glaube ich nicht ganz verständlich ausgedrückt. Ich bin keineswegs ein Fan von xml. Ich wollte nur sagen, dass man Klassen, Hierarchien usw auch in beliebigen anderen Sprachen beschreiben kann und dass es meiner Meinung nach nicht wirklich "Code" ist, sondern eh...
- 02.11.2011, 22:28
- Forum: Algorithmen und Datenstrukturen
- Thema: Ctor einer Klasse aufrufen, die so heißt wie eine Methode
- Antworten: 28
- Zugriffe: 10891
Re: Ctor einer Klasse aufrufen, die so heißt wie eine Method
wieso nicht einfach gettern ein get vorranstellen, also getPosition(), statt position()? Es verrät zu viel über die Interna. Wenn eine Methode getXXX() heißt, dann erwarte ich, dass sie den Wert tatsächlich in annähernd O(0) aus dem Speicher liest. Ich erwarte dann außerdem, dass dann ebenfalls all...
- 02.11.2011, 21:01
- Forum: Algorithmen und Datenstrukturen
- Thema: Ctor einer Klasse aufrufen, die so heißt wie eine Methode
- Antworten: 28
- Zugriffe: 10891
Re: Ctor einer Klasse aufrufen, die so heißt wie eine Method
wieso nicht einfach gettern ein get vorranstellen, also getPosition(), statt position()?
- 02.11.2011, 14:43
- Forum: Programmiersprachen, Quelltext und Bibliotheken
- Thema: Makros und String Concatenation
- Antworten: 2
- Zugriffe: 557
Re: Makros und String Concatenation
Danke :)
- 02.11.2011, 13:31
- Forum: Programmiersprachen, Quelltext und Bibliotheken
- Thema: Makros und String Concatenation
- Antworten: 2
- Zugriffe: 557
Makros und String Concatenation
Moin.
Wieso funktioniert zwar folgendes:
Aber nicht folgendes:
?
Wieso funktioniert zwar folgendes:
Code: Alles auswählen
#define WIDEN2(str) (L ## str)
#define WIDEN(str) WIDEN2(str)
#define __FILEW__ WIDEN(__FILE__)
Code: Alles auswählen
#define WIDEN(str) (L ## str)
#define __FILEW__ WIDEN(__FILE__)
- 01.11.2011, 19:09
- Forum: Allgemeines Talk-Brett
- Thema: Jammer-Thread
- Antworten: 7534
- Zugriffe: 1558117
Re: Jammer-Thread
// format specifiers: #define FRMT_SPCFR_STRTOSTR_A ((EG_CHAR*)"s") #define FRMT_SPCFR_WSTRTOSTR_A ((EG_CHAR*)"ls") // "%S" would also work #if defined _EG_WINDOWS_PLATFORM || (defined _EG_MARMALADE_PLATFORM && !defined I3D_ARCH_ARM) # define FRMT_SPCFR_STRTOWS...
- 25.10.2011, 19:09
- Forum: Allgemeines Talk-Brett
- Thema: Jammer-Thread
- Antworten: 7534
- Zugriffe: 1558117
Re: Jammer-Thread
// Formatierte Stringausgabe in C: // ascii string in formatierten ascii string Ausgabe: printf("%s\n", "foo0"); // VS: ok, GCC: ok - wie erwartet printf("%S\n", "foo1"); // VS: nicht ok, GCC: nicht ok - wie erwartet printf("%hs\n", "foo2"...
- 25.10.2011, 19:07
- Forum: Programmiersprachen, Quelltext und Bibliotheken
- Thema: [Tipps & Tricks] bad programming
- Antworten: 123
- Zugriffe: 17488
Re: [Tipps & Tricks] bad programming
Dafür gibt es aber offensichtlich keinen Bedarf, sonst würden sies sofort implementieren. Und selbst wenn würde das nichts am Problem ändern, dass die WinAPI mit C90 kompatibel sein muss. Natürlich könnte man mit #ifdef __cplusplus was machen...aber wir kommen vom Thema ab ;) Demnach gibts auch kei...
- 25.10.2011, 18:26
- Forum: Programmiersprachen, Quelltext und Bibliotheken
- Thema: [Tipps & Tricks] bad programming
- Antworten: 123
- Zugriffe: 17488
Re: [Tipps & Tricks] bad programming
Die Alternative wäre, dass MS nach 12 Jahren endlich mal C99 unterstützt, wie es der GCC schon ewig macht...
- 25.10.2011, 18:09
- Forum: Allgemeines Talk-Brett
- Thema: Jammer-Thread
- Antworten: 7534
- Zugriffe: 1558117
Re: Jammer-Thread
// Formatierte Stringausgabe in C: // ascii string in formatierten ascii string Ausgabe: printf("%s\n", "foo0"); // VS: ok, GCC: ok - wie erwartet printf("%S\n", "foo1"); // VS: nicht ok, GCC: nicht ok - wie erwartet printf("%hs\n", "foo2"...
- 25.10.2011, 17:01
- Forum: Allgemeines Talk-Brett
- Thema: Jammer-Thread
- Antworten: 7534
- Zugriffe: 1558117
Re: Jammer-Thread
// Formatierte Stringausgabe in C: // ascii string in formatierten ascii string Ausgabe: printf("%s\n", "foo0"); // VS: ok, GCC: ok - wie erwartet printf("%S\n", "foo1"); // VS: nicht ok, GCC: nicht ok - wie erwartet printf("%hs\n", "foo2"...
- 25.10.2011, 02:16
- Forum: Programmiersprachen, Quelltext und Bibliotheken
- Thema: [Tipps & Tricks] bad programming
- Antworten: 123
- Zugriffe: 17488
Re: [Tipps & Tricks] bad programming
Gehe ich korrekt in der Annahme, dass der Präprozessor als reiner Textersetzer aus std::max(a, b) dann std::((a<b)?b:a) macht, was der Compiler dann natürlich nicht versteht? Exakt. Und der Programmierer versteht die daraus resultierenden Fehlermeldungen in der Regel noch weniger... Was lernen wir ...
- 25.10.2011, 02:06
- Forum: Programmiersprachen, Quelltext und Bibliotheken
- Thema: [Tipps & Tricks] bad programming
- Antworten: 123
- Zugriffe: 17488
Re: [Tipps & Tricks] bad programming
Jetzt würde mich aber interessieren, warum er das max im std-namespace nicht findet, wenn es ein globales max-define gibt?
Gehe ich korrekt in der Annahme, dass der Präprozessor als reiner Textersetzer aus std::max(a, b) dann std::((a<b)?b:a) macht, was der Compiler dann natürlich nicht versteht?
Gehe ich korrekt in der Annahme, dass der Präprozessor als reiner Textersetzer aus std::max(a, b) dann std::((a<b)?b:a) macht, was der Compiler dann natürlich nicht versteht?
- 25.10.2011, 01:32
- Forum: Programmiersprachen, Quelltext und Bibliotheken
- Thema: [Tipps & Tricks] bad programming
- Antworten: 123
- Zugriffe: 17488
Re: [Tipps & Tricks] bad programming
Nicht wenn das std:: dort steht und eben genau das ist der Punkt, denn eigentlich sollte es kompilieren. Nun ist die Frage warum es das nicht tut... Dort steht nirgends, dass max laut Standard zum namespace stl gehört, nur dass es zu den stl-Algorithmen gehört, was nicht ausschließt, dass es im glo...
- 25.10.2011, 00:57
- Forum: Programmiersprachen, Quelltext und Bibliotheken
- Thema: [Tipps & Tricks] bad programming
- Antworten: 123
- Zugriffe: 17488
Re: [Tipps & Tricks] bad programming
Wer immer Makros für eine tolle Idee hält, den bitte ich, folgenden Code zu kompilieren: #include <windows.h> #include <iostream> #include <algorithm> int main() { int a, b; std::cin >> a >> b; std::cou << "max(a, b) = " << std::max(a, b); } Wenn, dann so: #include <windows.h> #include <i...
- 24.10.2011, 22:22
- Forum: Allgemeines Talk-Brett
- Thema: Jammer-Thread
- Antworten: 7534
- Zugriffe: 1558117
Re: Jammer-Thread
Ach, printf-Syntax ist doch was feines: Gerade zur Vermeidung von magic-numbers bei der Angabe des Mindestplatzes für bestimmte Parameter einen Formatstring genutzt, der das Format für die Kreation des eigentlichen Formatstrings, welcher dann den tatsächlichen String kreiert, festlegt. Sieht dann so...
- 24.10.2011, 21:08
- Forum: Programmiersprachen, Quelltext und Bibliotheken
- Thema: [Tipps & Tricks] bad programming
- Antworten: 123
- Zugriffe: 17488
Re: [Tipps & Tricks] bad programming
Die gesamte Vektorklasse ist die Realisierung des Konzepts, arithmetische Operatoren zu implementieren, mit einem spezifischen Datentyp. Und dieser Datentyp ist wiederum die Realisierung des Konzepts eines Arrays, auf das jede Operation parallel angewandt wird, mit einem bestimmten Datentyp und ein...
- 24.10.2011, 18:55
- Forum: Allgemeines Talk-Brett
- Thema: Jammer-Thread
- Antworten: 7534
- Zugriffe: 1558117
Re: Jammer-Thread
ic ich glaube ich habe noch eine etwas ältere version gehabt. Als Java Freund ist man es ja gar nicht gewöhnt so genau hinzuschauen. Als ich damals an einem App entwickelt hab, habe ich also erst mal laufend irgendwelche unbekannten signale verschickt... Das war dann der Moment an dem ich begonnen ...
- 24.10.2011, 16:29
- Forum: Allgemeines Talk-Brett
- Thema: Jammer-Thread
- Antworten: 7534
- Zugriffe: 1558117
Re: Jammer-Thread
ObjC ist voll von solchen Späßen. Sicher das man nicht irgendwo die höchste Warnstufe einstellen kann und das dann angezeigt wird? Sowas wie warning-level gibts im gcc/clang ja nicht, man kann eben einen Haufen warnings einzeln an- und abschalten und natürlich alles an und dann treat warnings as er...
- 24.10.2011, 15:55
- Forum: Allgemeines Talk-Brett
- Thema: Jammer-Thread
- Antworten: 7534
- Zugriffe: 1558117
Re: Jammer-Thread
Entdeckung des Tages: Man kann objC Properties statt auf existierende Variablen einfach auf nicht existente wie z.B. einfache Tippfehler zugreifen lassen, gibt kein Warning, kein nichts, es wird dann einfach eine Variable erzeugt und den Compiler interessiert es nicht die Bohne, dass die nirgends in...
- 24.10.2011, 15:42
- Forum: Programmiersprachen, Quelltext und Bibliotheken
- Thema: [Tipps & Tricks] bad programming
- Antworten: 123
- Zugriffe: 17488
Re: [Tipps & Tricks] bad programming
Netter tipp...durch den Preprozessor wird sich oft widerholender Code eingespart, ohne gleich inline-methoden verwenden zu müssen. Ich hoffe doch mal das war Ironie!? Also ich finde die Klasse auch ganz nett. Ich kann euch auch nur raten, die Finger von solchem Blödsinn zu lassen. Templates und inl...
- 22.10.2011, 23:37
- Forum: Allgemeines Talk-Brett
- Thema: Anti-Jammer-Thread
- Antworten: 2059
- Zugriffe: 723579
Re: Anti-Jammer-Thread
Keine STL, absolut minimale CRT-Nutzung, boost ziehe ich garnicht erst in Betracht und WinAPI/DirectX existieren nur hinter Wrappern (landen also nur in zwei oder drei von zehn Übesetzungseinheiten). (KA, was die ganzen Header alles machen, aber performant ist es nicht.) Das kanns nicht sein. Bei m...
- 22.10.2011, 23:26
- Forum: Allgemeines Talk-Brett
- Thema: Anti-Jammer-Thread
- Antworten: 2059
- Zugriffe: 723579
Re: Anti-Jammer-Thread
Viel Spaß damit, wenn jedes Kompilieren so lange dauert wie ein kompletter Rebuild der gesamten Solution *g* Aktuelles Projekt mit 1 MiB Quelltext in 20 Übersetzungseinheiten ( .cpp -Dateien) und 70 Headern, im Debug-Modus: 1>Build succeeded. 1> 1>Time Elapsed 00:00:01.89 ========== Rebuild All: 1 ...
- 22.10.2011, 22:16
- Forum: Allgemeines Talk-Brett
- Thema: Anti-Jammer-Thread
- Antworten: 2059
- Zugriffe: 723579
Re: Anti-Jammer-Thread
Viel Spaß damit, wenn jedes Kompilieren so lange dauert wie ein kompletter Rebuild der gesamten Solution *g*
- 18.10.2011, 22:14
- Forum: Programmiersprachen, Quelltext und Bibliotheken
- Thema: Speicherverwaltung ein fall für die Engine?
- Antworten: 36
- Zugriffe: 5721
Re: Speicherverwaltung ein fall für die Engine?
Selbst wenn man einen eigenen Allokator schreibt, kommt man nicht drumherum mehr Speicher zu nutzen, als reserviert wird alleine schon aus Debuggründen, z.B. um Falschzugriffe erkennen zu können. Dafür gibts doch Debug- und Release-Configs ;) Ach ihr habt doch nur Glück, dass euer Registrierungsdat...