Messages in this thread | | | Date | Fri, 02 Dec 2005 11:02:36 -0500 | From | Bill Davidsen <> | Subject | Re: Use enum to declare errno values |
| |
Coywolf Qi Hunt wrote: > 2005/12/2, Pekka Enberg <penberg@cs.helsinki.fi>: > >>Hi, >> >>2005/12/2, Denis Vlasenko <vda@ilport.com.ua>: >> >>>>There is another reason why enums are better than #defines: >> >>On 12/2/05, Coywolf Qi Hunt <coywolf@gmail.com> wrote: >> >>>This is a reason why enums are worse than #defines. >>> >>>Unlike in other languages, C enum is not much useful in practices. >>>Maybe the designer wanted C to be as fancy as other languages? C >>>shouldn't have had enum imho. Anyway we don't have any strong motives >>>to switch to enums. >> >>I don't follow your reasoning. The naming collision is a real problem >>with macros. With enum and const, the compiler can do proper checking >>with meaningful error messages. Please explain why you think #define >>is better for Denis' example? >> >> Pekka >> > > > That is a bad bad style. It should be `#define FOO 123' if you have to > write it. > > It's also hard to see what the confusing bar is "if you are looking at > file.c alone". > > enum is worse than typdef. Don't you see why we should use `struct > task_struct', rather than `task_t'? > > Introducing enum alone can't solve the problems from bad macro usage > habits. Actually, it's not anything wrong with macros, it's > programers' bad coding style.
Using enum doesn't *solve* problems, it does *allow* type checking, and *prevent* namespace pollution. Use of typedef allows future changes, if you use "struct XXX" you're stuck with it.
-- bill davidsen <davidsen@tmr.com> CTO TMR Associates, Inc Doing interesting things with small computers since 1979 - To unsubscribe from this list: send the line "unsubscribe linux-kernel" in the body of a message to majordomo@vger.kernel.org More majordomo info at http://vger.kernel.org/majordomo-info.html Please read the FAQ at http://www.tux.org/lkml/
| |