ich zitiere mal aus dem C9X-standard:
Zitat von
ISO/IEC 9899:1999, WG14:
There are five standard signed integer types, designated as signed char, short
int, int, long int, and long long int. (These and other types may be designated in several additional ways, as described in 6.7.2.) There may also be implementation-defined extended signed integer types. The standard and extended signed integer types are collectively called signed integer types.26)
An object declared as type signed char occupies the same amount of storage as a ‘‘plain’’ char object. A ‘‘plain’’ int object has the natural size suggested by the architecture of the execution environment (large enough to contain any value in the range INT_MIN to INT_MAX as defined in the header <limits.h>).
INT_MIN ist -32767 und INT_MAX ist +32767.
es ist also lediglich sichergestellt daß "int" in C mindestens diesen zahlenbereich speichern kann. gleiches gilt für "unsigned int" wobei gilt: UINT_MAX = 65535. auch hier wird nur festgeschrieben daß der datentyp diese zahl speichern können muss.
eine vollkommen legale übersetzung nach Delphi wären also genauso gut die Delphi-typen "Integer", "Cardinal" oder "Int64". es macht keinerlei unterschied denn alle diese typen können die zahl 65535 eindeutig speichern. das hier vorgeschlagene "Word" ist lediglich der kleinste datentyp der die anforderungen "gerade so" noch erfüllt. der standard schlägt vor daß der datentyp int an die architektur angepasst werden soll.
hier musst du also das handbuch deines compilers dazu befragen wie groß bei ihm "unsigned int" ist. normalerweise wäre es auch einer IA32 32bit. dann wäre eine korrekte übersetzung "LongWord".
und wenn du dich später dazu entschließt einen anderen C-compiler für deinen objektcode (du willst ja anscheinend nur den header übersetzen) zu nehmen wirst du erneut nachschauen müssen wie groß "unsigned int" auf dem neuen compiler ist.