Diese Hub-Seite verweist auf einzelne C-Frontend-Seiten fuer implementierte, getestete Konstrukte.
struct Point {
int x;
int y;
};
struct Point p = { .x = 1, .y = 2 };
printf("%d,%d\n", p.x, p.y);
Diese Hub-Seite verweist auf einzelne C-Frontend-Seiten fuer implementierte, getestete Konstrukte.
Die Seite ist bewusst ein Ueberblickskapitel. Details, Syntax, Grenzen und Validierungsbelege stehen auf den darunterliegenden Einzelseiten, damit nicht mehrere Befehle auf einer einzigen Referenzseite vermischt werden.
PBXB64s C-Frontend zielt auf eine getestete C17/C23-Teilmenge fuer Windows x64. Benutzerfunktionen und externe Aufrufe werden fuer die Windows-x64-ABI gesenkt: Integer- und Zeigerargumente verwenden RCX, RDX, R8 und R9; Floating-Point-Argumente verwenden XMM0 bis XMM3; weitere Argumente liegen auf dem Stack. Diese ABI-Notiz ist fuer C/PB/ASM-Mischprogramme wichtig.
Portabilitaet: Die Hilfeseiten dokumentieren PBXB64s natives Windows-Ziel, nicht einen POSIX-C-Compiler. Vermeide Annahmen ueber Unix-Header, Hostprozessverhalten oder implementation-defined Groessen, sofern die jeweilige Einzelseite sie nicht ausdruecklich belegt.
Die C-Seiten verweisen auf konkrete Beispiele oder Validierungstests. Neue C-Frontend-Behauptungen sollen erst nach einem fokussierten compile/link/run-Beleg in diese Referenz aufgenommen werden.
Beginne mit dieser Uebersicht, wenn du die passende Sprachform suchst, und wechsle dann auf die Einzelseite. Dort stehen die getestete Syntax, der begrenzte PBXB64-Umfang, bekannte Einschraenkungen und der konkrete Datei- oder Matrixbeleg.
Ein guter C-Beleg ist eine kleine, eigenstaendige Quelldatei mit Exitcode 0 fuer Erfolg, klarer Fehlerrueckgabe und nur den Headern, die das gezeigte Feature wirklich benoetigt.
String-Seiten sollen angeben, ob Daten dynamisch, festlängig, ASCIIZ, Unicode, UTF-8, ANSI oder rohe Bytes sind. Beispiele sollen leeren Text, nicht leeren Text und bei Kodierungsfragen mindestens ein Zeichen außerhalb einfacher A-Z-Eingaben enthalten.
Dokumentieren Sie Besitz, Längeneinheiten, Terminatoren und Konvertierungsverlust. Bei x64-Interop sind String-Datenzeiger von Deskriptoren zu unterscheiden; 32-Bit-Zeigergrößen dürfen nicht vorausgesetzt werden.
Nennen Sie Trunkierung, ungültige Kodierung, eingebettete NUL-Zeichen oder zu kleine Puffer, wenn der Befehl solche Fälle treffen kann.
#include <stdio.h>
struct Rect { int x, y, w, h; };
int main(void) {
struct Rect r = {0, 0, 10, 20};
printf("%d\n", r.w * r.h);
return 0;
}