hardcoded constants

Rahul Dhesi dhesi at bsu-cs.UUCP
Sun Dec 18 01:24:59 AEST 1988


In article <2478 at ficc.uu.net> peter at ficc.uu.net (Peter da Silva) writes:
>How about sizeof "/"? Or does that return sizeof(char *)?

I considered this and rejected it because it is misleading.  We need 2
because one is for a '/' in the middle and one is for a trailing null,
not because we need two for just '/'.  That "/" is a string and needs
two is not really the point, even though it gives the right answer.

The format I prefer most is actually:

     strlen(a) + 1 + strlen(b) + 1

because it arranges the components of the expression in the right
order.  (It also avoids the magic number 2.  However, 1 is a magic
number here even though it isn't usually considered to be one.)  It
would be nice to be able to say

     strlen(a) + sizeof('/') + strlen(b) + 1

but unfortunately sizeof('/') is the same as sizeof(int).

One could also do

     #define   ONE_CHAR   1
     #define   TWO_CHARS  2

and then say things like:

     strlen(a) + ONE_CHR + strlen(b) + ONE_CHR
     strlen(a) + strlen(b) + TWO_CHARS

This sounds like the type of error undergraduates make when they are
first asked to use symbolic constants, but upon thinking I realize that
it could actually clarify the code quite a bit.
-- 
Rahul Dhesi         UUCP:  <backbones>!{iuvax,pur-ee}!bsu-cs!dhesi



More information about the Comp.lang.c mailing list