我看到了在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