complex
ist ein Makro aus complex.h, das in den Typbezeichner _Complex
expandiert. Dies verhält sich wie alle anderen Typspezifizierer, beispielsweise int, bool, double
. Für alle Typenbezeichner, die zu derselben "Gruppe" gehören, können Sie sie in verschiedenen Aufträgen kombinieren. Dies wird durch C11 6.7.2, Hervorhebung meins angegeben:
In der Deklaration muss mindestens ein Typbezeichner angegeben werden Spezifizierer in jeder Deklaration und in der Spezifizierer-Qualifikationsliste in Jede Strukturdeklaration und jeder Typname. Jede Liste von Typspezifizierern ist eine der folgenden Multimengen (durch Kommata begrenzt, wenn es gibt mehr als ein Multiset pro Artikel); die Typspezifizierer können in beliebiger Reihenfolge auftreten , möglicherweise vermischt mit der anderen Deklaration Spezifizierer.
Dann folgt eine Liste gültiger Gruppen von Typspezifizierern, wo wir
finden
float _Complex
double _Complex
Das bedeutet, dass jede Permutation der Spezifizierer in derselben Gruppe in Ordnung ist.
Um ein anderes Beispiel zu nehmen, gibt es eine Gruppe
unsigned long long
oderunsigned long long int
Was uns die folgenden möglichen Kombinationen gibt:
%Vor%oder
%Vor%Das alles bedeutet dasselbe.
Ja. Im Allgemeinen spielt die Reihenfolge der "typy words" am Anfang einer Deklaration keine Rolle:
%Vor%ist dasselbe wie
%Vor%Referenz: C99, 6.7.2 / 2
[...] Die Typspezifizierer können möglicherweise in beliebiger Reihenfolge auftreten vermischt mit den anderen Deklarationsspezifikatoren.
(Sowohl float
als auch _Complex
sind Typspezifikatoren.)
Tags und Links c