J'aimerais pouvoir faire quelque chose comme
#print "C Preprocessor got here!"
à des fins de débogage. Quelle est la meilleure façon / la plus portable de faire cela?
printing
c-preprocessor
Andrew Wagner
la source
la source
#ifdef _LINUX #define #preprocmsg "#warning" else #define #preprocmsg "#pragma message"
... Je vais devoir essayer mais l'instinct me dit que la réponse est non.#define WARNING(msg) _Pragma("message " #msg)
Les éléments suivants sont pris en charge par MSVC et GCC .
Clang a récemment commencé à ajouter un support, voir ici pour plus.
la source
Vous voudrez peut-être essayer:
#pragma message("Hello World!")
la source
La plupart des compilateurs C reconnaissent une
#warning
directive, doncIl y a aussi la directive standard '#error',
Bien que tous les compilateurs prennent en charge cela, cela arrêtera également la compilation / le prétraitement.
la source
fonctionne très bien. N'arrêterait pas non plus la compilation même si vous utilisez -Werror
la source
Une autre solution consiste à utiliser des commentaires et un script shell pour les traiter. Cela demande une certaine discipline (ou un script shell qui détecte les fautes de frappe).
Par exemple, j'ajoute des commentaires formatés
//TODO
puis un script shell qui les rassemble tous dans un rapport.Pour des cas d'utilisation plus complexes, vous pouvez essayer d'écrire votre propre préprocesseur simple. Par exemple, vous pouvez modifier vos sources sous forme de
*.c2
fichiers. Le préprocesseur simple lit la source, recherche//TODO
et écritprintf("TODO ...")
dans le*.c
fichier de sortie .la source
Vous ne pouvez pas. Les préprocesseurs sont traités avant le code C. Il n'y a pas de directives de préprocesseur à imprimer à l'écran, car le code du préprocesseur n'est pas exécuté, il est utilisé pour générer le code C qui sera compilé en code exécutable.
Quelque chose ne va pas avec:
Parce que c'est tout ce que vous pouvez faire en ce qui concerne les préprocesseurs.
la source