Header files with enums instead of defines?

Sam sah at softcardsystems.com
Tue Dec 21 20:29:56 PST 2004


> On Tuesday, 21 December 2004 at 20:43:14 -0500, Brian Fundakowski Feldman wrote:
>> On Wed, Dec 22, 2004 at 11:31:43AM +1030, Greg 'groggy' Lehey wrote:
>>> Has anybody thought about replacing #defines with enums in header
>>> files?  It would make debugging a whole lot easier.  Foe example, I'm
>>> currently looking at a debug printout which contains:
>>>
>>>   xerrno = 17,
>>>
>>> To find out what that means, I need to go to
>>> /usr/src/include/sys/errno.h and look for 17.  I find:
>>>
>>> #define	EEXIST		17		/* File exists */
>>>
>>> If we were to change this to
>>>
>>> enum EEXIST = 17;	                /* File exists */
>>>
>>> I'd then be able to see:
>>>
>>>   xerrno = EEXIST,
>>>
>>> That makes debugging a whole lot easier.  About the only down side I
>>> can see is that you can't #undef an enum.  Is this a big deal?
>>
>> I think you'll screw up an awful lot of people that #ifdef based upon
>> the errno names.
>
> *sigh*  Yes, I didn't think about that.  Never mind.

Seems a shame to forgo utility to avoid breaking a fragile
assumption.  Maybe an ifdef ERRNO_T in errno.h that defines
an enum errno_t instead?

Sam



More information about the freebsd-arch mailing list