Die C ++ Core Guidelines haben die Regel ES.20: Ein Objekt immer initialisieren . Vermeiden Sie zuvor festgelegte Fehler und das damit verbundene undefinierte Verhalten. Vermeiden Sie Probleme mit dem Verständnis komplexer Initialisierungen. Vereinfachen Sie das Refactoring. Aber diese Regel hilft nicht, Fehler zu finden, sondern verbirgt sie nur. Angenommen, …
Betrachten Sie die folgende enum- und switch-Anweisung: typedef enum { MaskValueUno, MaskValueDos } testingMask; void myFunction(testingMask theMask) { switch (theMask) { case MaskValueUno: {}// deal with it case MaskValueDos: {}// deal with it default: {} //deal with an unexpected or uninitialized value } }; Ich bin ein Objective-C-Programmierer, aber ich …
Wann ist es beim Entwerfen einer eigenen Programmiersprache sinnvoll, einen Konverter zu schreiben, der den Quellcode in C- oder C ++ - Code konvertiert, damit ich einen vorhandenen Compiler wie gcc verwenden kann, um den Maschinencode zu erhalten? Gibt es Projekte, die diesen Ansatz verwenden?
Ich habe diese zwei kleinen Programme: C #include <stdio.h> int main() { if (5) { printf("true\n"); } else { printf("false\n"); } return 0; } Java class type_system { public static void main(String args[]) { if (5) { System.out.println("true"); } else { System.out.println("false"); } } } die meldet die Fehlermeldung: type_system.java:4: …
Die Firma, bei der ich arbeite, initialisiert alle ihre Datenstrukturen durch eine Initialisierungsfunktion wie folgt: //the structure typedef struct{ int a,b,c; } Foo; //the initialize function InitializeFoo(Foo* const foo){ foo->a = x; //derived here based on other data foo->b = y; //derived here based on other data foo->c = z; …
Ich weiß, dass ich ziemlich oft gehört habe, dass C typischerweise einen Leistungsvorteil gegenüber C ++ hat. Ich habe nicht wirklich darüber nachgedacht, bis mir klar wurde, dass MSVC nicht einmal den neuesten Standard von C zu unterstützen scheint, aber der neueste, der es unterstützt, C99 (soweit ich weiß). Ich …
Wir alle haben definitiv das eine oder andere Mal typedefs und #defines benutzt. Während ich heute mit ihnen zusammenarbeite, habe ich angefangen, über etwas nachzudenken. Betrachten Sie die folgenden 2 Situationen, um einen intDatentyp mit einem anderen Namen zu verwenden: typedef int MYINTEGER und #define MYINTEGER int Wie in der …
Seit Jahren beschäftige ich mich mit "low level" Sprachen. Für mich bedeutet das C und Montage. Allerdings hatte ich noch keine Zeit dafür und war es auch NIE nötig. Jetzt, da ich keine Notwendigkeit sehe, sollte ich entweder nur einen Zeitpunkt festlegen, an dem ich das Thema studieren werde, oder …
Daher habe ich viele Kommentare / Posts / etc zum direkten Erstellen von Makefiles gesehen und wie dumm es ist, das im Jahr 2015 zu tun. Ich kenne Tools wie CMake und benutze CMake tatsächlich ziemlich oft. Die Sache ist, dass CMake nur das Makefile für Sie erstellt und dabei …
Der C-Präprozessor ist an C angehängt, hat jedoch eine völlig andere Syntax als die Hauptsprache: syntaktisch signifikantes Leerzeichen (Zeilenende beendet eine Anweisung, Lücke nachdem das Makro den Anfang der Ersetzungsliste bestimmt) schlüsselwortbasierte Blöcke anstelle von geschweiften Blöcken elifanstelle vonelse if Schlüsselwort-geführte Definitionen anstelle von Deklaration-Reflects-Use, nein =für Wertedefinition Hinweise auf …
Ich habe die C-Programmierung überprüft und es gibt nur ein paar Dinge, die mich stören. Nehmen wir diesen Code zum Beispiel: int myArray[5] = {1, 2, 2147483648, 4, 5}; int* ptr = myArray; int i; for(i=0; i<5; i++, ptr++) printf("\n Element %d holds %d at address %p", i, myArray[i], ptr); …
Ich weiß, dass Zeiger Adressen enthalten. Ich weiß, dass Zeigertypen "allgemein" bekannt sind, basierend auf dem "Typ" der Daten, auf die sie zeigen. Zeiger sind jedoch weiterhin Variablen, und die Adressen, die sie enthalten, müssen einen "Datentyp" haben. Nach meinen Informationen sind die Adressen im hexadezimalen Format. Aber ich weiß …
Was ist Ihre Lieblingsmethode, um einen Zeiger zu deklarieren? int* i; oder int *i; oder int * i; oder int*i; Bitte erklären Sie warum. Siehe auch: http://www.stroustrup.com/bs_faq2.html#whitespace
Welche Vorteile haben schreibgeschützte String-Literale, die Folgendes rechtfertigen (-ies / -ied): Noch eine andere Art, sich in den Fuß zu schießen char *foo = "bar"; foo[0] = 'd'; /* SEGFAULT */ Unfähigkeit, ein Lese-Schreib-Array von Wörtern in einer Zeile elegant zu initialisieren: char *foo[] = { "bar", "baz", "running out …
In Sprachen wie C und C ++ benötigen wir unter Verwendung von Zeigern auf Variablen einen weiteren Speicherort, um diese Adresse zu speichern. Ist das nicht ein Gedächtnisaufwand? Wie wird das kompensiert? Werden Zeiger in zeitkritischen Anwendungen mit geringem Arbeitsspeicher verwendet?
We use cookies and other tracking technologies to improve your browsing experience on our website,
to show you personalized content and targeted ads, to analyze our website traffic,
and to understand where our visitors are coming from.
By continuing, you consent to our use of cookies and other tracking technologies and
affirm you're at least 16 years old or have consent from a parent or guardian.