LINUX.ORG.RU

[C] WTF with enum? [iphone][audiotoolbox]

 ,


0

0

Я привык думать, что енумы в С (да и в С++) - всегда int. Но в айфоновском сдк увидел енум, который представляет из себя хер знает что. Смотрите сами (См. в самом низу коды ошибок):

enum {
  kAudioFileUnspecifiedError = 'wht?',
  kAudioFileUnsupportedFileTypeError = 'typ?',
  ........
};

Там реально стоят одинарные кавычки.

Что это такое? Хотя в switch можно сравнивать int'овый возврат функции с этими константами, и сравнение срабатывает правильно. Но что такое одинарные кавычки, если не один char, и как это распарсить?

★★

Ответ на: комментарий от anon_666

И правда, умный :)

Это оно?

The value of an integer character constant containing more than
one character (e.g., 'ab') [...] is implementation-defined.

In practice, the value of 'ab' is likely to be either 'a' * 256 + 'b'
or 'b' * 256 + 'a'. It will vary from one compiler to another.
bk_ ★★
() автор топика
Ответ на: комментарий от anon_666

Внезапно

aaa@bugtracker:/tmp$ cat s.c
#include <stdio.h>

int main()
{
        printf("%u == %u == %u\n", sizeof(char), sizeof('f'), sizeof(int));
        return 0;
}

aaa@bugtracker:/tmp$ gcc s.c
aaa@bugtracker:/tmp$ ./a.out
1 == 4 == 4

Я думал иначе.

bk_ ★★
() автор топика
Ответ на: Внезапно от bk_
aaa@bugtracker:/tmp$ g++ s.c
aaa@bugtracker:/tmp$ ./a.out
1 == 1 == 4
bk_ ★★
() автор топика
Ответ на: комментарий от bk_

>Нет, я думал, что sizeof(char) = 4. А оказалось 1.

Пожалуйста, не пиши ничего для опенсорс! Пиши только закрытые программы, только для макос/айфонов и для венды.

Led ★★★☆☆
()
Ответ на: комментарий от fool_anon

>А где же стандартное про дворников?

А зачем нужен дворник-вредитель? Не, дворники - они должны быть квалифицированными. Не умеющие держать метлу - нафиг не нужны.

Led ★★★☆☆
()
Вы не можете добавлять комментарии в эту тему. Тема перемещена в архив.