Manuel de mise en forme de code C/C++

Al Dev (Alavoor Vasudevan) <[email protected]>
Traduction fran�aise de Robert Jacolin <[email protected]>
Relecture de Christophe Fergeau <[email protected]>

V 6.0, 1 ao�t 2000
Ce document vous aidera � mettre en forme (embellir) des programmes C/C++ pour qu'ils soient plus lisibles et conformes � vos standards de codage C/C++. Les informations pr�sentes dans ce document s'appliquent � tous les syst�mes d'exploitation existants - les syst�mes d'exploitation GNU/Linux, MS DOS, Windows 95/NT, OS/2, IBM, tous les clones Unix comme Solaris, HPUX, AIX, SCO, Sinix, BSD, SCO, etc ... - et � tous les autres syst�mes d'exploitation qui poss�dent un compilateur "C" (ce qui veut dire presque tous les syst�mes d'exploitation de cette plan�te!).

1. Introduction

Les standards de codage pour le C/C++ ou d'autres langages sont utilis�s dans le but de rendre les programmes plus lisibles/compr�hensibles par les programmeurs. Pour cela, il existe des embellisseurs C/C++ (outils de formatage). Le code format� (embelli) augmente la productivit� des programmeurs de 100%!!

Sur GNU/Linux/Unix, il existe des commandes appel�es "indent" et "cb". R�f�rez-vous aux pages de manuel par 'man indent' et 'man cb'. Notez que indent et cb fonctionnent uniquement pour les programmes "C". Pour les programmes "C++", utilisez "bcpp". T�l�chargez ce programme de mise en forme � partir des sites suivants :

J'ai utilis� BCPP pour formater les programmes C++ et il m'a parfaitement convenu. Vous pr�f�rerez peut-�tre essayer d'autres outils et utiliser celui que vous appr�cierez le plus.

BCPP a �t� �crit par Steven De Toni

2. Comment avoir confiance en un programme de mise en forme ??!!

Pour �tre sur � 100%, vous devez utiliser une approche SCIENTIFIQUE pour valider et avoir confiance en un programme de mise en forme. La m�thode d�crite dans cette section permettra au programme de mise en forme d'�tre agr�� comme �tant "vraiment fiable" et s�rieux. Dans le but de v�rifier qu'un programme de mise en forme comme bcpp, indent ou cb ne provoque pas de dommage ou ne change pas le code source d'entr�e apr�s formatage, vous pouvez utiliser le script shell Programme de v�rification ou utiliser la technique suivante :

G�n�rez le code objet � partir du code source original en utilisant le compilateur :


  g++ -c monprogramme.cpp

Ici g++ est le compilateur C++ GNU. Le code objet monprogramme.o sera g�n�r�

Sauvez ce fichier :


   mv monprogramme.o monprogramme_orig.o

Maintenant, lancez bcpp :


   bcpp monprogramme.cpp

Le fichier contenant le programme format� monprogramme.cpp sera g�n�r� et le fichier initial sera d�plac� dans monprogramme.cpp.orig. Compilez le nouveau fichier :
   g++ -c monprogramme.cpp

Maintenant utilisez la commande unix 'diff' pour comparer les 2 fichiers objets :
   diff monprogramme.o monprogramme_orig.o

Les deux fichiers DOIVENT �TRE IDENTIQUES. Cette commande v�rifie que bcpp fonctionne parfaitement. Sous DOS ou sous Windows 95, vous devrez utiliser les utilitaires 'diff' ou 'MKS' de Cygwin fournis sur le site de Cygnus. De plus, vous pouvez utiliser la sortie en assembleur � la place de la sortie objet du compilateur. En faisant :
    g++ -S monprogramme.cpp

monprogramme.s sera cr��. V�rifiez-le avec :


    diff monprogramme.s monprogramme_orig.s

Cette �tape vous garantit � 100% que votre pr�cieux code source reste intact et que bcpp fait UNIQUEMENT du formatage et NE change PAS ou n'endommage pas votre code de quelque mani�re que ce soit. Cette m�thode vous assure � 100 % de sa qualit� et une GARANTIE � vie ou � long terme pour ces programmes de mise en forme comme 'bcpp', 'cb' ou 'indent'.

Il est fortement recommand� de faire ces deux �tapes chaque fois que vous lancerez un programme de mise en forme comme bcpp, indent ou cb.

3. Embellisseurs pour d'autres langages

Visitez les sites suivants pour obtenir des embellisseurs pour d'autres langages comme HTML, SQL, Java, Perl, Fortran.

Pour pr�senter du code sous format HTML :

Recherchez aussi dans les moteurs de recherches comme http://www.yahoo.com ou http://www.lycos.com et cherchez avec le mot-cl� "embellisseur" (ou "beautifier" pour le terme anglais, NDT).

4. Script de v�rification

Ceci est un script pour le shell Korn pour v�rifier les programmes de mise en forme. Il a besoin de "pdksh*.rpm" � partir du cdrom 'contrib' de Linux. Sauvez ce fichier en tant que fichier 'texte' et appliquez sur ce fichier la commande chmod a+rx. Vous pouvez r��crire ce script shell en Perl pour pouvoir l'utiliser sous Windows 95/NT ou MSDOS. Enlevez les commentaires de la variable PRGM pour le faire pointer sur bcpp, cb ou indent.


#!/bin/ksh

# Programme de v�rification pour contr�ler des embellisseurs C++ comme 'bcpp', 'indent' ou 'cb'
############################################################
# Copyright 
# Les droits d'auteurs sont sous les termes de la GNU/GPL.
# Auteur: Al Dev (Alavoor Vasudevan) [email protected]
# Traducteur : Robert Jacolin [email protected]
############################################################

check_beautify_now()
{
        # Efface tous les fichiers temporaires ...
        \rm -f ${TMP_FILE}
        \rm -f ${TMP_CPPFILE}*.*

        FNAME=$1
        if [ ! -f ${FNAME} ]; then
                print "\nErreur : Le fichier ${FNAME} n'existe pas!!. Arr�t imm�diat ...."
                exit
        fi
        \cp  -f ${FNAME} ${TMP_CPPFILE}.cpp
        ${COMPILER} -c ${TMP_CPPFILE}.cpp
        if [ ! -f ${TMP_CPPFILE}.o ]; then
                print "Erreur Fatale : Impossible de compiler ${FNAME}. Arr�t imm�diat ... "
                exit
        fi
        \mv -f ${TMP_CPPFILE}.o ${TMP_CPPFILE}_orig.o

        aa=`basename $PRGM`
        print "\nEn cours, v�rification de $aa sur ${FNAME}"
        ${PRGM} ${TMP_CPPFILE}.cpp
        ${COMPILER} -c ${TMP_CPPFILE}.cpp
        \rm -f $TMP_FILE
        diff ${TMP_CPPFILE}.o ${TMP_CPPFILE}_orig.o 1> $TMP_FILE 2>> $TMP_FILE
        result=""
        result=`wc -c $TMP_FILE | awk '{print $1}' `
        if [ "$result" = "0" ]; then
                print "Succ�s!! La mise en forme de $aa fonctionne proprement!!\n"
        else
                print "Erreur Fatale : Quelque chose ne va pas!! La mise en forme ne fonctionne pas!!"
                exit
        fi
#       ${COMPILER} -S ${TMP_CPPFILE}.cpp
#       diff ${TMP_CPPFILE}.s ${TMP_CPPFILE}_orig.s

        # Efface tous les fichiers temporaires ....
        \rm -f ${TMP_FILE}
        \rm -f ${TMP_CPPFILE}*.*
}

########## La partie principale du programme commence ici ##################
#PRGM=/usr/bin/bcpp
#PRGM=/usr/bin/cb
PRGM=/usr/bin/indent
COMPILER=/usr/bin/g++

TMP_FILE=beautify.tmp
TMP_CPPFILE=beautify-tmp_cppfile

print -n "Entrez le nom du fichier C++ <valeur par d�faut *.cpp> : "
read ans
if [ "$ans" = "" -o "$ans" = " " ]; then
        ans="ALL"
else
        FILENAME=$ans
fi

# Efface tous les fichiers temporaires ....
\rm -f ${TMP_FILE}
\rm -f ${TMP_CPPFILE}*.*

if [ "$ans" != "ALL" ]; then
        check_beautify_now ${FILENAME}
else
        ls *.cpp |
        while read FILENAME 
        do
                check_beautify_now ${FILENAME}
        done
fi

5. Des urls sur ce sujet

Visitez les sites suivants en rapport avec le C, C++ :

6. Autres formats de ce document

Ce document est publi� dans 11 formats diff�rents qui ont pour noms : DVI, Postscript, Latex, Adobe Acrobat PDF, LyX, GNU-info, HTML, RTF (Rich Text Format : Format de texte enrichi), texte simple, pages de manuel Unix et SGML.

Le document a �t� �crit en utilisant un outil appel� "SGML-Tools" qui peut �tre obtenu � partir du site http://www.sgmltools.com. Pour compiler les sources, vous devrez utiliser des commandes du genre :

Les documents Latex peuvent �tre convertis en fichier PDF simplement en produisant du Postscript en utilisant sgml2latex (et dvips) et en passant ce qui a �t� produit � la commande distill d'Acrobat ( http://www.adobe.com) comme suit :
bash$ man sgml2latex
bash$ sgml2latex filename.sgml
bash$ man dvips
bash$ dvips -o filename.ps filename.dvi
bash$ distill filename.ps
bash$ man ghostscript
bash$ man ps2pdf
bash$ ps2pdf input.ps output.pdf
bash$ acroread output.pdf &

ou vous pouvez encore utiliser la commande ps2pdf. ps2pdf fonctionne de fa�on analogue au produit Acrobat Distiller d'Adobe et poss�de les m�mes fonctionnalit�s : il convertit les fichiers Postscript en fichiers au format PDF (Portable Document Format, Format de Document Portable). ps2pdf est un petit script de commande (fichier batch) qui invoque Ghostscript, en s�lectionnant un "p�riph�rique de sortie" sp�cial appel� pdfwrite. Pour utiliser ps2pdf, le p�riph�rique pdfwrite doit �tre inclus dans le makefile lors de la compilation de Ghostscript ; voir la documentation sur la compilation de Ghostscript pour plus de d�tails.

Ce document (version anglaise) est situ� � :

Vous pouvez aussi trouver ce document sur les sites miroirs suivant :

Pour visualiser un document au format DVI, utilisez le programme xdvi. Le programme xdvi est situ� dans le paquetage tetex-xdvi*.rpm dans la Linux Redhat. Il peut �tre trouv� par l'interm�diaire des boutons de menu Panneau de Contr�le (ControlPannel) | Applications (Applications) | Publications (Publishing) | TeX (TeX).

Pour lire un document dvi, utilisez la commande :

        xdvi -geometry 80x90 howto.dvi
        man xdvi
et changez la taille de la fen�tre avec la souris. Pour naviguer dans le document, utiliser les touches fl�ch�es, les touches de saut de page haut, saut de page bas, vous pouvez aussi utiliser les lettres 'f', 'd', 'u', 'c', 'l', 'r', 'p', 'n' pour vous d�placer vers le haut, le bas, au centre, � la page suivante, � la page pr�c�dente, etc. Pour d�sactiver le mode expert, pressez 'x'.

Vous pouvez lire un fichier Postscript gr�ce au programme 'gv' (ghostview) ou 'ghostscript'. Le programme ghostscript est dans le paquetage ghostscript*.rpm et le programme gv est dans le paquetage gv*.rpm dans la distribution linux Redhat qui peut se trouver en utilisant les boutons du menu Panneau de Contr�le (Control panel) | Applications (Applications) | graphiques (Graphics). Le programme gv est beaucoup plus facile � utiliser que ghostscript. Ghostscript et gv existent aussi sous d'autres plate-formes comme OS/2, Windows 95 et NT.

Pour lire un document postscript utilisez la commande :
                gv howto.ps
                ghostscript howto.ps
Vous pouvez lire un document au format HTML en utilisant Netscape Navigator, Microsoft Internet Explorer, le navigateur Baron de Redhat ou le navigateur de votre choix parmi les dizaines de navigateurs web existants.

Vous pouvez lire les documents latex ou Lyx g�n�r�s en utilisant Lyx qui est une interface graphique sous "X-Window" pour latex.

7. Droits d'auteurs

La licence du copyright est la licence GNU/GPL comme pour le LDP (Linux Documentation Project, le projet de documentation de Linux). Le LDP est un projet sous licence GNU/GPL. Les restrictions additionnelles sont : vous devez laisser le nom de l'auteur, l'adresse email et cette note sur le droit d'auteurs sur toutes les copies. Si vous faites un quelconque changement ou addition dans ce document, vous devez alors pr�venir tous les auteurs de ce document.