我看到了在Mac OS SDK類似下面的代碼:將枚舉值設置爲4字節的字符串 - 爲什麼?
enum {
kAudioFileStreamProperty_ReadyToProducePackets = 'redy',
kAudioFileStreamProperty_FileFormat = 'ffmt',
kAudioFileStreamProperty_DataFormat = 'dfmt',
kAudioFileStreamProperty_FormatList = 'flst',
kAudioFileStreamProperty_MagicCookieData = 'mgic',
kAudioFileStreamProperty_AudioDataByteCount = 'bcnt',
kAudioFileStreamProperty_AudioDataPacketCount = 'pcnt',
kAudioFileStreamProperty_MaximumPacketSize = 'psze',
kAudioFileStreamProperty_DataOffset = 'doff',
kAudioFileStreamProperty_ChannelLayout = 'cmap',
kAudioFileStreamProperty_PacketToFrame = 'pkfr',
kAudioFileStreamProperty_FrameToPacket = 'frpk',
kAudioFileStreamProperty_PacketToByte = 'pkby',
kAudioFileStreamProperty_ByteToPacket = 'bypk',
kAudioFileStreamProperty_PacketTableInfo = 'pnfo',
kAudioFileStreamProperty_PacketSizeUpperBound = 'pkub',
kAudioFileStreamProperty_AverageBytesPerPacket = 'abpp',
kAudioFileStreamProperty_BitRate = 'brat'
};
這是我第一次看到了這一點 - 我假設編譯器分配的32位整數等效字符串的枚舉值。我想不出一個好的理由,爲什麼這可能比使用簡單的整數更受歡迎。它看起來在調試器(你怎麼知道這些值對應於1919247481
?),並在總體上使調試只是很難猙獰。
因此,沒有任何理由在那裏分配這樣的字符串其實是有道理的枚舉值。
我不明白多字符字符文字 – 2010-03-29 23:54:08
允許多字符整數字符常量(至少C99),但該值是實現定義的(見第6.4.4.4節)。 – 2010-03-30 00:15:13