(27.12.2020 16:53 )IchSelbst schrieb: (27.12.2020 15:04 )hansi9990 schrieb: Bist du absolut sicher das ein C ULONG in LabView als 64bit interpretiert wird?
Ein C ULong ist gemäß aller von mir gefundenen Beschreibungen ein 64-Bit-Wert. Folgedessen muss ja wohl LV auch 64 Bit machen. Im übrigen finde ich die LV-Bezeichnungen mit I8, I32 etc. besser als INT, LONG usw. Bei den LV-Bezeichnungen ist eindeutig I16 immer zwei Byte. Ein INT ist je nach Sprache 16 oder 32 Bit ...
Nein. ULONG ist ein Windows Datentyp der als synonym für "unsigned long" dient. unsigned sagt einfach dass es ohne Vorzeichen ist und ist für die Grösse des Datentypes irrelevant. long is unter allen modernen 32-bit Systemen immer ein 32-bit Integer. In 64-bit Systemen ist es unter Unix typischerweise ein 64-bit Wert während Microsoft es als 32-bit Wert sehen will.
https://docs.microsoft.com/en-us/openspe...faf985b822
Unter Windows muss man entweder "long long" oder den eindeutigeren "ïnt64_t" verwenden um einen 64-it integer zu bekommen. Und QWORD ist der Microsoft Windows spezifieke 64 Bit Datentyp. UINT64, ULONG64, und ULONGLONG sind andere mögliche Varianten die in Windows APIs als eindeutige 64-bit unsigned Integerdatentypen verwendet werden können.
Microsoft C spezifik kann man auch "__int64" verwenden, aber das ist nicht portable zu anderen C Compilern die nicht Microsoft C kompatibel zu sein versuchen. Es war in Visual C 2005 der Datentyp den man verwenden musste wenn man 64 bit Integer haben wollte.