Twitter iPhone pliant OnePlus 11 PS5 Disney+ Orange Livebox Windows 11

declaration ??

5 réponses
Avatar
geme
bonjour,

dans les fichiers .h de la lib allegro, il y a de tres nombreuses
declarations de ce type:

AL_FUNC(char *, fix_filename_case, (char *path));
AL_FUNC(char *, fix_filename_slashes, (char *path));
AL_FUNC(char *, canonicalize_filename, (char *dest, AL_CONST char
*filename, int size));
AL_FUNC(char *, make_absolute_filename, (char *dest, AL_CONST char
*path, AL_CONST char *filename, int size));
AL_FUNC(char *, make_relative_filename, (char *dest, AL_CONST char
*path, AL_CONST char *filename, int size));
AL_FUNC(int, is_relative_filename, (AL_CONST char *filename));
AL_FUNC(char *, replace_filename, (char *dest, AL_CONST char *path,
AL_CONST char *filename, int size));
AL_FUNC(char *, replace_extension, (char *dest, AL_CONST char *filename,
AL_CONST char *ext, int size));
AL_FUNC(char *, append_filename, (char *dest, AL_CONST char *path,
AL_CONST char *filename, int size));
AL_FUNC(char *, get_filename, (AL_CONST char *path));
AL_FUNC(char *, get_extension, (AL_CONST char *filename));
AL_FUNC(void, put_backslash, (char *filename));
AL_FUNC(int, file_exists, (AL_CONST char *filename, int attrib, int *aret));

qu'est-ce que cela peut bien vouloir dire, comment comprendre ces lignes?
merci d'avance pour votre aide

5 réponses

Avatar
zwim
Le Fri, 16 Oct 2009 23:42:50 +0200
geme a écrit
bonjour,

dans les fichiers .h de la lib allegro, il y a de tres nombreuses
declarations de ce type:

AL_FUNC(char *, fix_filename_case, (char *path));
AL_FUNC(char *, fix_filename_slashes, (char *path));
AL_FUNC(char *, canonicalize_filename, (char *dest, AL_CONST char
*filename, int size));
AL_FUNC(char *, make_absolute_filename, (char *dest, AL_CONST char
*path, AL_CONST char *filename, int size));
AL_FUNC(char *, make_relative_filename, (char *dest, AL_CONST char
*path, AL_CONST char *filename, int size));
AL_FUNC(int, is_relative_filename, (AL_CONST char *filename));
AL_FUNC(char *, replace_filename, (char *dest, AL_CONST char *path,
AL_CONST char *filename, int size));
AL_FUNC(char *, replace_extension, (char *dest, AL_CONST char *filename,
AL_CONST char *ext, int size));
AL_FUNC(char *, append_filename, (char *dest, AL_CONST char *path,
AL_CONST char *filename, int size));
AL_FUNC(char *, get_filename, (AL_CONST char *path));
AL_FUNC(char *, get_extension, (AL_CONST char *filename));
AL_FUNC(void, put_backslash, (char *filename));
AL_FUNC(int, file_exists, (AL_CONST char *filename, int attrib, int *aret));

qu'est-ce que cela peut bien vouloir dire, comment comprendre ces lignes?
merci d'avance pour votre aide



Bah, c'est leur tambouille pour avoir une certaine portabilité je
suppose.

La macro AL_FUNC est définie dans allconfig.h, sous windows j'ai :

#define AL_FUNC(type, name, args) type name args

Bref, les lignes ci-dessus ne sont que des prototypes standard de
fonctions.

Perso, j'ai jamais été lire le contenu des headers de la lib, la doc
d'api me suffit.




--
zwim.
Rien n'est impossible que la mesure de la volonté humaine...
Avatar
geme
zwim a écrit :

Bah, c'est leur tambouille pour avoir une certaine portabilité je
suppose.

La macro AL_FUNC est définie dans allconfig.h, sous windows j'ai :

#define AL_FUNC(type, name, args) type name args

Bref, les lignes ci-dessus ne sont que des prototypes standard de
fonctions.

Perso, j'ai jamais été lire le contenu des headers de la lib, la doc
d'api me suffit.




merci beaucoup
Avatar
candide
zwim a écrit :

Perso, j'ai jamais été lire le contenu des headers de la lib, la doc
d'api me suffit.




Je crois comprendre que tu utilises ou a utilisé Allegro. Cette
bibliothèque est moins en vogue (ou considéré comme vieillotte par
rapport à la SDL). En deux mots, pourrais-tu nous faire partager ce que
penses de la bibliothèque Allegro, de ses capacités et de comment est
faite l'API ? Je connais surtout la SDL mais en lisant du code Allegro,
j'ai trouvé que le code de cette dernière était écrit plus simplement et
en particulier semblait plus accessible au débutant.

Merci.
Avatar
zwim
Le Sun, 18 Oct 2009 17:08:37 +0200
candide a écrit
zwim a écrit :

Perso, j'ai jamais été lire le contenu des headers de la lib, la doc
d'api me suffit.




Je crois comprendre que tu utilises ou a utilisé Allegro. Cette
bibliothèque est moins en vogue (ou considéré comme vieillotte par
rapport à la SDL). En deux mots, pourrais-tu nous faire partager ce que
penses de la bibliothèque Allegro, de ses capacités et de comment est
faite l'API ? Je connais surtout la SDL mais en lisant du code Allegro,
j'ai trouvé que le code de cette dernière était écrit plus simplement et
en particulier semblait plus accessible au débutant.

Merci.



En fait je n'utilise Allegro que depuis peu.

J'avais un certain nombre de programmes écrit en Turbo Pascal et
faisant principalement du graphisme simple.

Ce langage étant tombé en désuétude, j'ai cherché sur le net une
alternative simple pour porter tout ça en C, et il est assez facile de
passer des primitives TP à celles d'Allegro sans trop s'embêter.

En gros ça m'a pris 1 petite journée pour porter mon unité graphique
TP vers un .c et un .h et du coup le portage des mes programmes TP est
presque évident maintenant.

C'est pour ça que je la conseillais à un débutant qui voudrait juste
s'amuser à dessiner des trucs sur l'écran ou dans un fenêtre, pouvoir
interagir facilement avec clavier souris. La prise en main ne demande
pas plus d'une journée.

Personnellement je n'ai jamais utilisé la SDL, mais d'après ce que
j'ai lu c'est sensiblement du même acabit. La différence se situe au
niveau de la hauteur de l'api. Apparemment Allegro est de plus haut
niveau que la SDL. La SDL permet donc sans doute de faire plus de
choses, mais demande aussi plus d'investissement personnel avant
d'obtenir les premiers résultats.

Ce que j'aprécie dans Allegro c'est le côté direct à l'essentiel. On
te donne un buffer video, est des primitives pour allumer un pixel,
tracer des lignes, faire du floodfill, gestion des sprites, etc...
bref le basique du graphisme mais ça suffit pour s'amuser, sans avoir
à te soucier des aspects driver video, directX ou X11.




--
zwim.
Rien n'est impossible que la mesure de la volonté humaine...
Avatar
candide
zwim a écrit :

Ce que j'aprécie dans Allegro c'est le côté direct à l'essentiel. On
te donne un buffer video, est des primitives pour allumer un pixel,
tracer des lignes, faire du floodfill, gestion des sprites, etc...
bref le basique du graphisme mais ça suffit pour s'amuser, sans avoir
à te soucier des aspects driver video, directX ou X11.



Pour moi aussi, le côté simple et direct est un élément d'appréciation
important. La SDL abstrait aussi l'API vidéo mais par exemple elle ne
comporte pas la possibilité de tracer des lignes ou de remplir des
surfaces (il faut faire appel à d'autres lib).

Merci de ton témoignage. Pour ceux qui veulent voir du code
d'apprentissage de la SDL, il y a dans le livre de Deitel & Deitel ("C :
how to program?") un chapitre intitulé "Game Programming with the
Allegro C Library" (le chapitre 15) dont les sources sont disponibles
ci-dessous :


http://web.csie.chu.edu.tw/~chang/course/c-programming/program/C_HTP5e_Examples/