Mon ami dit qu'il est possible d'écrire un programme en C qui imprimera "hello world" sans IF/WHILE/FOR
et sans points-virgules. Après des recherches minimes, je lui ai dit que ce n'était pas possible. C'est possible?
Réponses
Trop de publicités?J'ai essayé de trouver un "portable" le vol d'un point-virgule à partir d'un fichier include. Cela fonctionne sous Linux:
int main(int ac, char **av)
{
#define typedef
#define uint8_t a[printf("hello world\n")]
#include <stdint.h>
}
Cela provoque une typedef unsigned char uint8_t
devenir mon printf.
Une autre astuce qui a fonctionné a été de #define
suite tous les standard stdint type tel que stdint.h
réduit à un tas de points-virgules.
Deux de ces tomber à plat sur FreeBSD, car il utilise privé des types intermédiaires (comme __uint8_t
), ce qui signifie que la suppression de typedef échoue dans l'exemple cité et m'empêche de l'éliminer tous les non-points-virgules dans les autres cas.
Il me semble qu'il devrait être possible de voler un point-virgule proprement à partir d'un fichier include. Quelqu'un peut-il améliorer ma tentative?