pb de compilation/macro - C - Programmation
Marsh Posté le 22-08-2005 à 15:44:26
nifnef a écrit : Dans ce code, il y a un fichier avec une pelle de #define et j'ai des pb de compilation a cause de ca (j'ai mis en commentaire une partie des define et ca va mieux, ca plante plus loin mais bon...toujours a cause des define d'ailleurs). |
A mon sens, tu n'as fait que reporter le problème. Tu devais avoir dans tes #define des références à des choses que le compilateur ne comprenait pas, genre un type non défini ou une fonction non déclarée.
Commenter les #define ne devrait que reporter l'erreur sur des emplois de #define qui pour le coup seront inconnus.
Citation : L'erreur c'etait genre IMAGE_DTYPE non défini |
Bingo.
Décommente tes #define, et regarde plutôt s'il ne te manque pas des fichiers.
Citation : (alors que c'est défini dans les macros justement) |
Manque forcément quelque chose.
Marsh Posté le 22-08-2005 à 16:41:27
arf! effectivement, j'avais oublié de compiler avec une dépendance...
Mais bon, ca ne fonctionne toujours pas! maintenant il me sort une erreur syntaxique!
Code :
|
je ne vous ai mis qu'un extrait des macros
donc mon erreur c'est :
[gcc]
spm_vol_utils.c:251: error: erreur de syntaxe before "IMAGE_DTYPE"
spm_vol_utils.c: Dans la fonction « RESAMPLE_0 »:
spm_vol_utils.c:255: error: `m' undeclared (first use in this function)
spm_vol_utils.c:255: error: (Each undeclared identifier is reported only once
spm_vol_utils.c:255: error: for each function it appears in.)
spm_vol_utils.c:258: error: `x' undeclared (first use in this function)
[/gcc]
pour nous c'est erreur ligne 45 (la premiere)
les SPM_MACHIN sont définis dans spm_getdata.h
aucune des variables n'est reconnue, et surtout pas IMAGE_DTYPE !
Si tu vois qq chose Elmoricq... j'y ai passé presque ma journée ca me met les nerfs en boule!
Marsh Posté le 22-08-2005 à 16:58:41
theshockwave a écrit : et si tu compiles avec un -DSPM_DOUBLE ? |
Euh. S'il doit ajouter ce genre d'option pour que ça compile, à mon sens, y a un truc qui cloche.
Doit encore manquer des dépendances je pense, où se trouve le fameux SPM_DOUBLE défini.
Je peux me tromper.
Sinon au pire, il peut effectivement essayer cette option... Mais bon...
Marsh Posté le 22-08-2005 à 17:13:56
yeah!Merci the shockwave! ca marche mieux (ca replante plus loin pour la meme erreur) par contre je n'ai pas compris ce que j'ai fait?! (ce que vous m'avez fait faire)
ca veut dire quoi -D ?
C'est défini dans datatypes.h
Code :
|
là où ca plante maintenant:
Code :
|
il faudrait que je mette -DSPM_DOUBLE/FLOAT/CHAR/UNSIGNED_CHAR, etc.. a la compilation?
En tout cas je pense (c'est obligé) que c'est un pb de compilation, puisqu'avant que je l'aie entre les mains ca fonctionnait
...(en même temps, vu la PCPoisse que j'ai..
Marsh Posté le 22-08-2005 à 17:32:10
dans ce cas, ca veut dire que tu dois inclure datatypes.h avant d'inclure ton fichier qui contient tes macros ...
Marsh Posté le 22-08-2005 à 17:52:49
nifnef a écrit : ca veut dire quoi -D ? |
C'est le début d'une commande ligne comprise par de nombreux compilateurs qui signifie 'Définir une macro de portée globale à l'unité de compilation'
On peut faire
gcc ... -DMYMACRO ... |
(définir)
ou même
gcc ... -DMYMACRO=123 ... |
(définir et donner une valeur)
selon les besoins.
Marsh Posté le 22-08-2005 à 17:55:33
Et les headers que tu utilises ont ete ecrit avec les pieds, parce qu'ils devraient inclure eux-meme tout ce dont ils ont besoins.
Sinon -DTOTO ca defini le symbole TOTO. C'est comme si tu ajoutais un "#define TOTO" au debut de chacun de tes fichiers.
Marsh Posté le 22-08-2005 à 18:25:25
j'ai vraiment du mal avec l'anglais, parce qu'en lisant ca je comprenais pas grand chose : (man gcc)
D Dump all macro definitions, at the end of preprocessing, in addition to normal output.
Matafan, faut les excuser, c'est pas des informaticiens qui ont codé.. bon... faut que je vérifie mes dependances si je comprend bien!
j'y retourne!
Merci a tous
Marsh Posté le 22-08-2005 à 18:32:08
nifnef a écrit : Matafan, faut les excuser, c'est pas des informaticiens qui ont codé.. |
Vu ton fichier datatypes et sa cohérence au niveau des définitions, on n'avait plus trop de doute
Marsh Posté le 22-08-2005 à 21:09:16
nifnef a écrit : j'ai vraiment du mal avec l'anglais, parce qu'en lisant ca je comprenais pas grand chose : (man gcc) |
Non ca c'est -dD, pas -D.
Marsh Posté le 23-08-2005 à 08:23:15
et moi qui doit tout relire et recoder, j'en bave à mort!!
Marsh Posté le 22-08-2005 à 15:30:55
Bonjour,
j'ai récupéré un code en C que j'essaie de compiler pour en faire une biblio statique.
Dans ce code, il y a un fichier avec une pelle de #define et j'ai des pb de compilation a cause de ca (j'ai mis en commentaire une partie des define et ca va mieux, ca plante plus loin mais bon...toujours a cause des define d'ailleurs). L'erreur c'etait genre IMAGE_DTYPE non défini (alors que c'est défini dans les macros justement)
Comme ce n'est pas mon code, je ne sais pas si j'ai le droit de le publier ici, alors je voudrai juste savoir a quoi il faut faire particulierement attention quand on utilise des #define ?
Merci !