重庆企业网站建设哪家好,暴走漫画网站建设目的,一步步教会你怎么做网站,自己做的创意的网站delphi枚举类型长度默认为2个字节(单字)#xff0c;而在C中枚举为4个字节(双字)#xff0c;如果需要跨这两个平台编程#xff0c;传输结构时会由于数据长度不一造成灾难。 经过查找资料#xff0c;原来delphi可以通过{$Z} {$Z-} {$Z1} {$Z4} 等宏设置枚举类型的长度#x… delphi枚举类型长度默认为2个字节(单字)而在C中枚举为4个字节(双字)如果需要跨这两个平台编程传输结构时会由于数据长度不一造成灾难。 经过查找资料原来delphi可以通过{$Z} {$Z-} {$Z1} {$Z4} 等宏设置枚举类型的长度小至1个字节大至4个字节。 官方说明如下 http://docs.embarcadero.com/products/rad_studio/delphiAndcpp2009/HelpUpdate2/EN/html/devcommon/compdirsminimumenumerationsize_xml.html The $Z directive controls the minimum storage size of Delphi enumerated types. An enumerated type is stored as an unsigned byte if the enumeration has no more than 256 values, and if the type was declared in the {$Z1} state (the default). If an enumerated type has more than 256 values, or if the type was declared in the {$Z2} state, it is stored as an unsigned word. Finally, if an enumerated type is declared in the {$Z4} state, it is stored as an unsigned double word. The {$Z2} and {$Z4} states are useful for interfacing with C and C libraries, which usually represent enumerated types as words or double words. Note: Note: For backwards compatibility with early versions of Delphi and CodeGear Pascal, the directives {$Z-} and {$Z} are also supported. They correspond to {$Z1} and {$Z4}, respectively. 例子如下 http://www.delphibasics.co.uk/RTL.asp?Name$Z Example code : Various enum type sizes type {$Z1} TCars1 (Rover, Jaguar, Honda); // Will fit into 1 byte TFruit1 (Banana255, Apple, Pear); // Will exceed one byte {$Z4} TCars2 (Ford, Nissan, Vauxhall); // Now uses 4 bytes TFruit2 (Orange255, Plum, Grape); // Now uses 4 bytesbegin ShowMessage(TCars1 size IntToStr(SizeOf(TCars1))); ShowMessage(TFruit1 size IntToStr(SizeOf(TFruit1))); ShowMessage(TCars2 size IntToStr(SizeOf(TCars2))); ShowMessage(TFruit2 size IntToStr(SizeOf(TFruit2)));end; TCars1 size 1 TFruit1 size 2 TCars2 size 4 TFruit2 size 4转载于:https://www.cnblogs.com/h2zZhou/p/5000153.html