Dans une récente interview, on m'a demandé un très étrange question. L'enquêteur m'a demandé comment puis-je calculer 1+2+3+...+1000 en utilisant les fonctions du compilateur. Cela signifie que je ne suis pas autorisé à écrire un programme et l'exécuter, mais je dois écrire un programme qui pourrait conduire le compilateur pour calculer cette somme, tandis que la compilation et imprimer le résultat lorsque la compilation est terminée. Comme un soupçon, il m'a dit que je peut utiliser des génériques et pré-processeur fonctions du compilateur. Il est possible d'utiliser C++, C# ou Java compilateur. Des idées???
Cette question n'est pas liée à calculer la somme, sans boucles demandé ici. En outre, Il convient de noter que la somme DOIT être calculée lors de la compilation. L'impression que le résultat à l'aide de C++ directives du compilateur n'est pas acceptable.
Edit:
En lire davantage sur les réponses, j'ai trouvé que la résolution des problèmes lors de la compilation à l'aide de modèles C++ est appelé la métaprogrammation. C'est une technique qui a été découvert accidentellement par le Dr Erwin Balancier, au cours du processus de normalisation du langage C++. Vous pouvez en lire plus à ce sujet sur la page wiki de la méta-programmation. Il semble qu'il est possible d'écrire un programme en Java à l'aide d'annotations java. Vous pouvez prendre un coup d'oeil à maress la réponse ci-dessous.
Edit 2:
Un beau livre sur les méta-programmation en C++, est ce un. La peine de prendre un coup d'oeil si vous êtes intéressé.
Edit 3
Une page web sur le C++ de la méta-programmation pourrait être accessible par ce lien.