ich über einige Code vor kurzem kam die aussah:Warum sizeof operator mit zwei Argumenten aufrufen?
if(sizeof(var,2) == 4) { ... }
(wo var
ein Typ ist)
Ich war ziemlich überrascht, was zu sehen erschien zwei Argumente an die sizeof
Operator zu sein. Ein schneller Scan des ISO/ANSI C99-Standards ergab keine Geheimnisse. Ich konnte keine Grammatik vorlesen, die ein Komma erlaubte.
Suche Google Code, konnte ich an example dieser Syntax in einigen PPC-Code finden.
Ist das eine PPC-spezifische Syntax? Was heißt das?
EDIT: Es stellt sich heraus, dass beide, was ich suchte bei - ebenso wie der Code verknüpft - Syntax spezifisch für die WindRiver Diab compiler ist:
sizeof(type, int-const):
If int-const is 0 sizeof returns the size in bytes of type.
If int-const is 1 sizeof returns the alignment of type.
If int-const is 2 sizeof returns an integer constant designating the type of type. Look up "sizeof operator" in the Diab C/C++ User's Guide for values.
Wow, sie haben wirklich überlastet die Bedeutung des sizeof
Betreibers.
EDIT2: Die vollständige Dokumentation ist hier: http://www.vxdev.com/docs/vx55man/diab5.0ppc/c-additi.htm#3001432
Es ist wichtig in dieser Diskussion zu erwähnen, dass "var" ein Typ ist. Weil das den Komma-Operator ausschließen würde. Aber "var" in Ihrer Frage sieht wie eine Variable aus. –
Umbenannte Variable für Klarheit. Vielen Dank. –
On Edit: Wow, das ist ... eine völlig unnötige Komplikation der C-Sprache. C ist kompliziert genug ... Wenn Sie die Ausrichtung sagen möchten, schreiben Sie eine alignof-Funktion oder einen Operator, wenn Sie darauf bestehen. meine Güte. (Nicht deine Schuld David, nur über schlechte Sprache Implementierer ...) –