나는 이것을 related question으로 읽었지만 꽤 도움이되지 않습니다.xcode UTF8 리터럴 문자를 사용하는 ENUM
열거 형의 목표는 4 바이트 범위 내에서 단일 UTF-8 문자의 원시 UTF-8 코드 (유니 코드 코드 포인트 아님)를 포함하는 것입니다.
다음 예제는 xcode 소스 파일이 UTF-8 형식 (xcode의 권장 인코딩)이기 때문에 작동합니다. 올바른 예상 값으로 컴파일되고 실행됩니다. 그러나 경고 "이 형식에 너무 긴 문자 상수" 경고. 나는 그것을 억압 할까? 아니면 나쁜 생각일까요?
typedef enum {
TEST_VAL_1BYTE = ',', // 0x2C
TEST_VAL_2BYTE = '§', // 0xC2A7 (the warning)
TEST_VAL_3BYTE = '✓', // 0xE29C93 (the warning)
TEST_VAL_4BYTE = '', // 0xF09D8DA5 (the warning)
} TEST_VALUES_UTF8;
가장 안전한 방법 및 경고없이하지만 코드에 더 지루 :
마지막으로typedef enum {
NUM_VAL_1BYTE = 0x2C, // ,
NUM_VAL_2BYTE = 0xC2A7, // §
NUM_VAL_3BYTE = 0xE29C93, // ✓
NUM_VAL_4BYTE = 0xF09D8DA5, //
} TEST_VALUES_UTF8;
1 개 또는 4 ASCII 문자가 열거주의하시기 바랍니다이 유효하고 경고없이 :
enum {
ENUM_TEST_1 = '1', // 0x31 (no warning)
ENUM_TEST_12 = '12', // 0x3132 (w: multi-character character constant)
ENUM_TEST_123 = '123', // 0x313233 (w: multi-character character constant)
ENUM_TEST_1234 = '1234', // 0x31323334 (no warning)
};
UTF-8 코드를 반환 할 수있는 소스 인코딩 일반 텍스트 인 사전 처리기 매크로가 있습니까?
enum {
TEST_VAL_2BYTE = AWESOME_UTF8CODE_MACRO('§'), // 0xC2A7
};
감사합니다. http://liveworkspace.org/code/3EtxVE 일품
열거 형 내부에 특정 멀티 바이트 시퀀스를 포함하려는 시도는 좋지 않습니다. 적어도 엔디안에 대한 관심이 있습니다. –
엔디 언이 이미 고려되어 있으므로 문제가되지 않습니다. –