SCR/AL1 - TOME III. Les librairies utilitaires
Syntax
CPPFILE *CppOpen(
char *filename,
int type
)
#else
CPPFILE *CppOpen(filename, type)
char *filename;
int type;
#endif
Description
Ouvre un fichier en mode interprétation. L'interpréteur gère les fichiers inclus (include) et les macros (define).
Trois variables contenant les caractères spéciaux reconnus par les fonctions du groupe Cpp peuvent être (re-)définies à tout moment.
Directives
Les directives suivantes sont interprétées :
Pour qu'une telle ligne ne soit pas interprétée, il suffit de placer un point-virgule (;) après le caractère #.
Macros
Le nom des macros peuvent être quelconque mais ne doit pas contenir de caractères autres qu'alphanumériques ou de soulignement (_).
L'utilisation des macros se fait à l'aide du caractère & suivi du nom de la macro :
#define UINT unsigned short
...
&UINT i;
Pour annuler l'interprétation d'une macro, il suffit de placer un point-virgule (;) après le caractère &.
Le séparateur qui suit le nom de la macro peut être quelconque. S'il s'agit d'un point-virgule (;), ce caractère est consommé.
#define TX unsigned short
&;TX x,y
&TX x,y
&TXx,y
Donne à l'interprétation
&TX x,y
unsigned short x,y
unsigned shortx,y
Pour prolonger le texte d'une macro sur plusieurs lignes, il suffit de placer en fin de ligne le caractère #. La ligne suivante ne sera pas interprétée (sauf en ce qui concerne les "sous-macros" utilisées) et fera partie de la macro.
Pour placer le caractère # en fin de macro, il suffit de le doubler en fin de ligne.
#define PAR1 .par1 par_1#
#define PAR2 .par1 par_2##
&PAR1 texte1
&PAR2 texte2
Donne à l'interprétation
.par1 par_1
texte1
.par1 par2# texte2
Si une macro n'est pas définie, le texte du fichier n'est pas interprété. Ainsi:
#define A AVAL
&A
&B
Donne à l'interprétation
AVAL
&B
Valeur retournée
La fonction retourne un pointeur vers une structure CPPFILE.
Voir également
CppGetc(), CppUngetc(), CppClose()
int CppClose(cpp)
CPPFILE *CppCurrent(CPPFILE *cpp)
int CppDefine(name, txt)
char *CppError(cpp)
CppGetc(cpp)
CPPFILE *CppOpen(char *filename, int type)
int CppRecord(cpp, buf)
int CppRecordLILO(cpp, buf)
int CppUngetc(cpp, ch)
CppCurrent (file s_cpp.c:366)
Syntax
CPPFILE *CppCurrent(
CPPFILE *cpp
)
#else
CPPFILE *CppCurrent(cpp)
CPPFILE *cpp;
#endif
Description
Copyright © 1998-2015 Jean-Marc Paul and Bernard PAUL - Envoyez vos remarques ou commentaires à bernard@xon.be