00001 /* 00002 00003 $ gcc bug.c -o bug 00004 bug.c: In function `main': 00005 bug.c:24: error: missing terminating " character 00006 bug.c:24: error: syntax error before numeric constant 00007 bug.c:24: error: missing terminating " character 00008 $ 00009 $ gcc -E bug.c -o bug.i 00010 $ gcc bug.i -o bug 00011 $ ./bug 00012 on line 24 we print:Hello World 00013 $ 00014 00015 */ 00016 00017 #include <stdio.h> 00018 00019 #define toto(x, ...) printf("on line" #x "we print: " __VA_ARGS__) 00020 #define printf(...) toto(__LINE__, __VA_ARGS__) 00021 00022 int main() 00023 { 00024 printf("Hello World\n"); 00025 return 0; 00026 }