Vous êtes nouveau sur Developpez.com ? Créez votre compte ou connectez-vous afin de pouvoir participer !

Vous devez avoir un compte Developpez.com et être connecté pour pouvoir participer aux discussions.

Vous n'avez pas encore de compte Developpez.com ? Créez-en un en quelques instants, c'est entièrement gratuit !

Si vous disposez déjà d'un compte et qu'il est bien activé, connectez-vous à l'aide du formulaire ci-dessous.

Identifiez-vous
Identifiant
Mot de passe
Mot de passe oublié ?
Créer un compte

L'inscription est gratuite et ne vous prendra que quelques instants !

Je m'inscris !

CPIP : un préprocesseur C/C++ développé sous Python
Pour démystifier les « prétraitements » avant la phase de compilation

Le , par Amine Horseman

25PARTAGES

0  0 
Plusieurs traitements réalisés en arrière-plan par les outils de développement, avant la phase de compilation du code source d’un projet, sont inconnus pour le développeur. On peut citer notamment l’inclusion des fichiers ou encore l’utilisation des macros.

CPIP, un préprocesseur C/C++ développé par Paul Ross, ingénieur informatique chez Google, ambitionne de changer cela. L’outil se donne pour mission de démystifier l’ensemble des « prétraitements » qui sont effectués avant la compilation.

Comme tous les préprocesseurs, il permet de réaliser les inclusions de fichiers juste avant la phase de compilation, la définition et le replacement de macros et de constantes symboliques ainsi que la compilation conditionnelle du code source.

Toutefois, CPIP est plus puissant que cela et permet d'enregistrer et visualiser tous les détails de l'opération pour ensuite les afficher à l'utilisateur sous différents formats: code source prétraité, graphe SVG représentant les différentes étapes d'inclusion, arbre coloré représentant le résultat de la compilation conditionnelle, page web affichant les dépendances et définitions de macros ainsi que d'autres informations sous forme de tableaux.

Le but est donc de donner au développeur toutes les informations utiles qui peuvent l'aider lors du débogage, au lieu de considérer cette phase de prétraitement comme un "sale boulot qui doit être fait le plus vite possible" déclare Paul Ross.

CPIP a été développé en Python. La version 0.9.1 est disponible en bêta-test sur SourceForge depuis le 23 septembre dernier sous licence GPLv2. Elle a été testée sous Python 2.7 et 3.3 et est actuellement en cours de refactorisation. La version stable devrait être disponible dans quelques semaines.

Un exemple de précompilation du noyau Linux en utilisant CPIP est disponible sur la page web du projet.

Télécharger la version bêta de CPIP

Pour plus d'information sur le fonctionnement d'un préprocesseur

Source : Le site du projet

Et vous ?

Pensez-vous que ce préprocesseur va vous faciliter la tâche de débogage ?

Une erreur dans cette actualité ? Signalez-le nous !

Avatar de jblecanard
Membre expert https://www.developpez.com
Le 06/10/2014 à 16:39
Citation Envoyé par Amine Horseman Voir le message
Pensez-vous que ce préprocesseur va vous faciliter la tâche de débogage ?
Perso, je pense que cet outil ne m'apporterait pas grand chose. A part quand je touche du code existant, je n'utilise pas de macros à part pour l'inclusion et comme header guard. J'évite autant que possible le code conditionnel, préférant séparer le code qui diffère dans différentes unités de compilation, pour que la bonne soit choisie par ma toolchain. A la limite, ça pourrait servir à optimiser les listes d'includes. Quant à débugguer, cpp affiche très bien du code pré-processé, et enfin, j'aurais tendance à penser que ce préprocesseur est plus lent, donc à n'utiliser que pour débugguer en cas de souci. Je ne suis donc pas près de m'en servir...
1  0 
Avatar de Bousk
Rédacteur/Modérateur https://www.developpez.com
Le 06/10/2014 à 18:45
Sans compter que sur Visual (et surement les autres compilos du coup), l'option -I (/I ou quelque chose comme ça, je ne sais plus exactement ne l'ayant utilisé qu'une seule et unique fois dans ma courte carrière ) permet déjà ce résultat si je ne m'abuse.
Je ne trouve aucune utilité à ce projet en dehors de s'amuser avec des regexp et comprendre la syntaxe du langage, en tant que projet perso.
1  0 
Avatar de bacelar
Expert éminent sénior https://www.developpez.com
Le 07/10/2014 à 12:07
C'est "/P" l'option de VS.
0  0