Mais non, super simple à vérifier (si quelqu’un sait comment se passer du a.out pour faire de la compil c “à la volée”, ça m’interesse):
[code]matt@emeraude ~ $ cc -x c - <<EOF && ./a.out && rm a.out
#include <stdlib.h>
#include <stdio.h>
#define C char
#define A for(argc=1
#define B argc
int main(int argc, char **argv){C c[]={67,12,-13,13,-3,-66,-11,1};char ca=*c; A;ca!=-1;ca+=(c[B]),B++) putchar(ca);return 0;}
EOF
COBOL[/code]et pour la version préprocessée:[code]matt@emeraude ~ $ cpp <<EOF
#include <stdlib.h>
#include <stdio.h>
#define C char
#define A for(argc=1
#define B argc
int main(int argc, char **argv){C c[]={67,12,-13,13,-3,-66,-11,1};char ca=*c; A;ca!=-1;ca+=(c[B]),B++) putchar(ca);return 0;}
EOF [/code]un peu long pour être mis ici, mais en version courte on retrouve bien:
[code]matt@emeraude ~ $ cpp <<EOF
#define C char
#define A for(argc=1
#define B argc
int main(int argc, char **argv){C c[]={67,12,-13,13,-3,-66,-11,1};char ca=*c; A;ca!=-1;ca+=(c[B]),B++) putchar(ca);return 0;}
EOF
1 “”
1 “”
1 “”
1 “”
int main(int argc, char **argv){char c[]={67,12,-13,13,-3,-66,-11,1};char ca=*c; for(argc=1;ca!=-1;ca+=(c[argc]),argc++) putchar(ca);return 0;}
[/code]