sizeof(char)

Dag-Erling Smørgrav des at des.no
Thu Sep 29 10:32:10 EST 2011


I was scanning through my config.h and noticed something that startled
me a bit.  The configure script actually checks what sizeof(char) is,
and defines.h relies on this information.

This is completely unnecessary.  By definition, sizeof(char) is always
1.  This is not a matter of opinion; the C standard explicitly states,
in §6.5.3.4 alinea 3,

  When applied to an operand that has type char, unsigned char, or
  signed char, (or a qualified version thereof) the result is 1.

On the other hand, unlike other basic integer types, the signedness of
char is implementation-defined; see §6.2.5 alinea 15 and footnote 35.
Since int8_t is supposed to be a *signed* 8-bit integer, it must be
explicitly defined as such.  Code that relies on char being signed will
break on IRIX, and probably a number of other implementations.

DES
-- 
Dag-Erling Smørgrav - des at des.no

-------------- next part --------------
A non-text attachment was scrubbed...
Name: openssh-sizeof-char.diff
Type: text/x-patch
Size: 789 bytes
Desc: not available
URL: <http://lists.mindrot.org/pipermail/openssh-unix-dev/attachments/20110929/fa4c089e/attachment.bin>


More information about the openssh-unix-dev mailing list