Die subtilen Abweichungen von C von C
Während allgemein angenommen wird, dass C eine Teilmenge von C ist, offenbart eine genauere Betrachtung subtile Unterschiede. Hier sind einige Fälle, in denen Code, der in C kompiliert wird, in C auf Hindernisse stößt:
Keine vorläufigen Definitionen
In C ist das Neudefinieren von Variablen illegal, anders als in C, wo vorläufige Definitionen gelten Definitionen ermöglichen spätere Neudefinitionen.
Array-Typ Inkompatibilität
C unterscheidet zwischen Array-Typen mit und ohne Größen, wodurch int[] und int[N] inkompatibel sind. C erlaubt jedoch die austauschbare Verwendung.
K&R-Funktionssyntax
C verbietet den K&R-Stil der Funktionsdefinition, bei dem die Funktionsparameterliste direkt auf den Rückgabetyp folgt .
Verschachtelter Strukturbereich
C definiert verschachtelt Strukturen haben einen Klassenbereich, während C sich an das frühere Verhalten des lokalen Bereichs hält.
Standard int
In C ist die Verwendung von „auto“ ohne einen expliziten Typbezeichner sinnvoll ungültig, anders als in C, wo standardmäßig int.
Zusätzliches C99 Inkompatibilitäten
C99 führte zu weiteren Diskrepanzen:
Array-Dimensionsspezifizierer
C verbietet Deklarationsspezifizierer in Array-Dimensionen von Funktionsparametern, was zulässig ist in C.
Variable Länge Arrays
C lässt die Unterstützung für Arrays variabler Länge aus, während C dies zulässt, indem Arrays mit nicht konstanten Größen deklariert werden.
Flexible Array-Mitglieder
C fehlt flexible Array-Mitglieder innerhalb von Strukturen, eine Funktion, die in vorhanden ist C.
Restrict Qualifier
C führt den Restrict Qualifier ein, um die Aliasing-Analyse zu unterstützen, aber er wird in C. nicht unterstützt.
Das obige ist der detaillierte Inhalt vonWie unterscheidet sich C in Bezug auf Kompilierung und Syntax geringfügig von C?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!