Subject: A TINY BUG
From: [email-masked] (Jon Thackray)

7 Oct 1997 13:55:16 -0700
Message-ID: <[email-masked]>
References: <[email-masked]>
To: [email-masked]

Tage Westlund writes:
 > To gnu designers!
 > I have found that the following bad code gives "exception" at run
 > time instead of error message at compilation time (b18 Win95):
 > 
 > #include <stdio.h>
 > main(){
 > 	printf("%s\n",sizeof(long));
 > }

C the language is not required to detect this error, and in the worst
case, simply can't. Consider

extern char *foo;
int main(int argc, char *argv[])
{
  printf(foo, sizeof(long));
  return 0;
}

The best a compiler could do would be to warn you that this might be
unsafe. OTOH, you may not want this behaviour, as you may believe that
programs should compile without errors or warnings, so that if errors
or warnigs are produced you know that you need to investigate them.
Many C compilers, at high warning levels, will detect the programmer
error you quote. But at the end of the day, with C, you are on your
own. C is not a safe language, and make no pretensions to be such. If
you wish to write in a safe language, perhaps you should try standard
ML.
-
For help on using this list (especially unsubscribing), send a message to
"[email-masked]" with one line of text: "help".