C++ personnaliser la syntaxe

C++ personnaliser la syntaxe

22/06/2012

Le​‌‍​‌​‌‍​‍ C++ est un langage de programmation issu du C. Il a été créé en 1995 par Bjarne STROUSTRUP, un doctorant en informatique. Le langage C++ est reconnu pour ses performances et sa simplicité d’utilisation. Il permet de gérer autant la programmation orientée objet que la programmation structurée classique.

Le langage hérite d’outils de développement issus du C. Je vais vous parler de l’un d’eux, les préprocesseurs.

Si vous avez déjà un peu développé en C ou en C++ vous les avez forcément rencontrés, il s’agit de l’ensemble des instructions précédées d’un #. Dans vos développement vous avez surement rencontré l’instruction #include ‘’stdafx.h’’ , c’est un préprocesseur.

Le préprocesseur est, comme son nom l’indique, une instruction qui va être réalisée avant la compilation du programme. L’instruction #include permet avant la compilation de regrouper les différents fichiers de sources qui seront utilisés. Il existe une autre instruction très utile qui est #define, elle permet de définir des variables qui seront remplacées par leurs valeurs réelles à la fin de la compilation. Elle permet aussi de réaliser des conditions de compilation pour par exemple compiler une version administrateur et une version utilisateur à partir d’un même code source.

Dans cette extrait de code la fonction drawAdmin() ne sera appelée que si le programme a été compilé avec une définition de la variable ADMIN.

#define permet de créer des variables mais aussi de leur affecter une valeur. Par exemple, le C++ ne gère pas le mot clé elseif disponible en php, il est toutefois possible de le définir de cette manière.

1
#define elseif else if

De la même manière le mot clé NULL n’existe pas en C++, mais cela ne pose pas de problème.

1
#define NULL 0

Vous pouvez encore aller plus loin en créant des fonctions. Par exemple, il peut être parfois ennuyant de recopier le même code un peu long pour écrire une boucle, vous pouvez simplifier le processus de cette manière.

1
#define REP(n) for(Int i=(n); --i>= 0 ;)

Et ainsi vous accélérez l’écriture de vos itérations.

Je vous mets à disposition la liste des préprocesseurs que j’utilise. A vous de choisir les vôtres.

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
typedef float    flt;
typedef double dbl;

typedef int8_t I8;
typedef uint8_t U8, Byte;
typedef int16_t I, I16, Int;
typedef uint16_t U, U16, UInt;
typedef int32_t I32;
typedef uint32_t U32;
typedef int64_t I64;
typedef uint64_t U64;

#define T (*this)
#define elseif else if
#define NULL 0

#define REP(n) for(U32 i=(n); --i>=0;)
#define FREP(n) for(U32 i=0; i<(n); i++)
#define REPD(i, n) for(U32 i=(n); --i>=0;)
#define FREPD(i, n) for(U32 i=0; i<(n); i++)