Sto lavorando con framework di Apple ScriptingBridge
, e hanno generato un file di intestazione per iTunes che contiene diversi enum
s come questo:Qual è il tipo di enum i cui valori sembrano essere stringhe?
typedef enum {
iTunesESrcLibrary = 'kLib',
iTunesESrcIPod = 'kPod',
iTunesESrcAudioCD = 'kACD',
iTunesESrcMP3CD = 'kMCD',
iTunesESrcDevice = 'kDev',
iTunesESrcRadioTuner = 'kTun',
iTunesESrcSharedLibrary = 'kShd',
iTunesESrcUnknown = 'kUnk'
} iTunesESrc;
La mia comprensione era che enum
valori dovevano essere intero simile, ma questa definizione sembra per violare questa regola. Inoltre, sembra che il trattamento di questi valori enum
come numeri interi (in un NSPredicate
, ad esempio) non faccia la cosa giusta.
ho aggiunto dichiarazione enum
sopra in un file C con una funzione vuota main
, e compilati utilizzando i686-apple-darwin9-gcc-4.0.1
. Quindi, mentre questi tipi di enum
s potrebbero non essere conformi allo standard C (come indica Parappa di seguito), sono almeno compilati allo del tipo da gcc.
Quindi, qual è il tipo e come posso utilizzarlo, ad esempio, in una stringa di formato?
Buono - qualcosa di ufficiale. :) –
Questa era un'estensione comune, ma non portatile, non standard prima del c99. – dmckee
@dmckee: costanti di caratteri multi-byte erano già parte di ANSI-C89 (vedi paragrafo 3.1.3.4), così è sempre stato normale! – Christoph