Error in my C programming
Giorgos Keramidas
keramida at ceid.upatras.gr
Mon Feb 21 09:03:03 PST 2005
On 2005-02-21 19:42, Kathy Quinlan <kat-free at kaqelectronics.dyndns.org> wrote:
> Peter Jeremy wrote:
>
> OK it was all to do with the comments it did not like the //comments
> ARRGGHHHH the rest of the errors were bogus as soon as I changed EVERY
> comment over to the ANSI C /*comments*/ it now works (oh and removed the
> #pragma directives from a c compiler for the AVR uC I will have to put
> all the different complier directives in different #ifdef tags :)
The quotations seem a bit messed up, so I don't know if Peter Jeremy or
Kathy Quinlan wrote the above paragraph. Whoever the author was though,
it may be worth to note that C99 *does* allow single-line comments
delimited by //.
The correct way to invoke the C compiler in C99-mode depends, of course,
on the compiler and it enables far more features than // comments. For
GCC, the correct option to use is -std=c99. Using this program as a
test, you can check for yourself (note that the comments of the sort
shown in the following program are EXTREMELY bad style; they only serve
as a test for //-style comments):
$ cat -n foo.c
1 #include <stdio.h> // For printf()
2 #include <stdlib.h> // For EXIT_SUCCESS
3
4 int
5 main(void)
6 {
7 printf("Hello C99 world\n"); // Print a message.
8 return (EXIT_SUCCESS); // Terminate program.
9 }
Compiling in C89 mode (which does not allow // comments) gives:
$ gcc -O -Wall -std=c89 foo.c
foo.c:1:23: warning: extra tokens at end of #include directive
foo.c:2:24: warning: extra tokens at end of #include directive
foo.c: In function `main':
foo.c:7: error: syntax error before '/' token
$
Compiling in C99 mode, works as expected:
$ gcc -O -Wall -std=c99 foo.c
$ ./a.out
Hello C99 world
$
More information about the freebsd-hackers
mailing list