Постоянно мучает вопрос, почему в C принято объявлять константы через define, а не через enum ?
Редко когда в библиотеке на C встретишь enum, но постоянно кучу defin'ов...
Ведь enum попадает в отладочную информацию, более корректно обрабатывается компилятором, легче читается...
Почему же используют define ?
Здравствуйте, __LP, Вы писали:
__L>Мне кажется в классическом С не было enum'ов. А в С99 есть const.
gcc test.c --pedantic -std=c89 компилирует всё молча.
typedef enum tag_E { a, b, c, unknown } E;
void print(E e)
{
switch (e)
{
case a: printf("a!"); break;
case b: printf("b!"); break;
case c: printf("c!"); break;
case unknown: printf("???"); break;
}
}
enum tag_E type()
{
switch (getchar())
{
case 'a': return a;
case 'b': return b;
case 'c': return c;
default: return unknown;
}
}
int main()
{
print(type());
}
gbt>>Почему же используют define ?
два предположения
1) old broken braindead C compilers
кажется, давным-давно, когда компьютеры были большими, а программы маленькими....
2) broken braindead C-programmers
программисты на С грязи не боятся!