estoy trabajando con marco de Apple ScriptingBridge
, y han generado un archivo de cabecera para iTunes que contiene varios enum
s como este:¿Cuál es el tipo de una enumeración cuyos valores parecen ser cadenas?
typedef enum {
iTunesESrcLibrary = 'kLib',
iTunesESrcIPod = 'kPod',
iTunesESrcAudioCD = 'kACD',
iTunesESrcMP3CD = 'kMCD',
iTunesESrcDevice = 'kDev',
iTunesESrcRadioTuner = 'kTun',
iTunesESrcSharedLibrary = 'kShd',
iTunesESrcUnknown = 'kUnk'
} iTunesESrc;
Mi entendimiento es que enum
valores tenían que ser entero-como, pero esta definición parece violar esa regla. Además, parece que tratar estos valores enum
como enteros (en un NSPredicate
, por ejemplo) no hace lo correcto.
Agregué la declaración enum
anterior a un archivo C con una función main
vacía, y se compiló usando i686-apple-darwin9-gcc-4.0.1
. Por lo tanto, aunque este tipo de enum
s puede no ajustarse al estándar C (como señala Parappa a continuación), al menos se compilan en algunos tipo por gcc.
Entonces, ¿qué es ese tipo y cómo puedo usarlo, por ejemplo, en una cadena de formato?
Bueno, algo oficial. :) –
Esta era una extensión común, pero no portátil, no estándar antes de c99, también. – dmckee
@dmckee: las constantes de caracteres multi-byte ya eran parte de ANSI-C89 (ver sección 3.1.3.4), ¡así que siempre ha sido estándar! – Christoph