gpt4 book ai didi

c - 将枚举值设置为 4 字节字符串 - 为什么?

转载 作者:行者123 更新时间:2023-12-01 08:11:18 26 4
gpt4 key购买 nike

我在 Mac OS SDK 中看到了类似的代码:

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?)并且通常会使调试变得困难。

那么,是否有任何理由将此类字符串分配给枚举值实际上有意义。

最佳答案

正是因为调试器,你才会做这样的事情。大多数调试器可以将内存显示为 ASCII,例如:

00000000: 12 34 56 78 90 12 45 67 12 34 56 78 89 ab cd ef .4Vx..Eg.4Vx....  

仅通过查看内存转储就能够识别结构、常量等,这非常方便。特别是如果这些结构和/或常量中的一个覆盖了一堆你不希望它覆盖的内存......

关于c - 将枚举值设置为 4 字节字符串 - 为什么?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/2542010/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com