j'ai vu un code similaire à ceci dans le Mac OS SDK:Définition des valeurs d'énumération sur des chaînes de 4 octets - pourquoi?
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'
};
C'est la première fois que je l'ai vu - je suppose que le compilateur attribue l'entier de 32 bits équivalent des chaînes aux valeurs ENUM. Je ne peux pas penser à une seule bonne raison pour laquelle cela pourrait être préféré à l'utilisation d'entiers simples. Il semble hideux dans un débogueur (comment dites-vous laquelle de ces valeurs correspond à 1919247481
?) Et rend le débogage juste difficile en général. Donc, y a-t-il une raison pour attribuer de telles chaînes aux valeurs d'énumération?
Je ne comprends pas le caractère littéral multi-caractères –
Une constante de caractère entier de plusieurs caractères est autorisée (par C99 au moins), mais la valeur est définie par l'implémentation (section 6.4.4.4). –