Current-Users archive

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index][Old Index]

Casting ctype lookups



I am getting warnings (errors with -Werror) when I do things like this:

#include <stdio.h>
void func(char *s)
{
  while (*s) *s = toupper(*s);
}
int main(void)
{
  printf("%s\n", func("Test string");
  return 0;
}

$ gcc -o t -Wall -Werror t.c
cc1: warnings being treated as errors
t.c: In function 'func':
t.c:6:3: error: array subscript has type 'char'

Should the inline macro cast the args for these table lookups?  I would
like to modify sys/ctype_inline.h to change lookup lines like;

#define toupper(c)  ((int)((_toupper_tab_ + 1)[(c)]))     
to
#define toupper(c)  ((int)((_toupper_tab_ + 1)[(int)(c)]))

or else add a comment why they should not be cast.  Which should it be?

-- 
D'Arcy J.M. Cain <darcy%NetBSD.org@localhost>
http://www.NetBSD.org/ IM:darcy%Vex.Net@localhost


Home | Main Index | Thread Index | Old Index