Problème pour compiler du c

Signaler
Messages postés
13
Date d'inscription
mardi 1 mars 2005
Statut
Membre
Dernière intervention
15 mars 2005
-
Messages postés
549
Date d'inscription
samedi 6 septembre 2003
Statut
Membre
Dernière intervention
6 mars 2010
-
Salut à tous

Je suis en galère avec du code qu'on m'a passé je n'arrive pas a le compiler

l'erreur c error C2447: missing function header (old-style formal list?)
je l'ai deja vu dans certains sujet mais dans mon cas je ne vois pas

voila le debut du code
l'erreur se fait à la première accolade

#include "stdafx.h"
#include <stdio.h>
#include <stdlib.h>
#include <math.h>


{ <----------- l'erreur est ici

struct image unsigned char *p;int x; int y;int bpp;
struct image* readpnm(FILE *f)


{struct image *pict;
char s[10],t[10],c;
long i;
fscanf(f,"%s",s); /* P5 */
/* printf("%c\n",s[0]); */
......

Voila merci à vous
FLO

13 réponses

Messages postés
224
Date d'inscription
mardi 12 août 2003
Statut
Membre
Dernière intervention
18 octobre 2010

Et si tu supprimais le '{ <----------- l'erreur est ici' ?
Messages postés
224
Date d'inscription
mardi 12 août 2003
Statut
Membre
Dernière intervention
18 octobre 2010

je rajoute: manque un en-tete de fonction:

#include "stdafx.h"
#include <stdio.h>
#include <stdlib.h>
#include <math.h>

struct image unsigned char *p;int x; int y;int bpp;
struct image* readpnm(FILE *f)

void mafonction()
{
struct image *pict;
char s[10],t[10],c;
long i;
fscanf(f,"%s",s); /* P5 */
/* printf("%c\n",s[0]); */
...
}
Messages postés
196
Date d'inscription
mercredi 6 août 2003
Statut
Membre
Dernière intervention
1 mai 2009
2
Ne manquerait il pas tout simplement la fonction main( ) ?

LaPatoshe
Messages postés
13
Date d'inscription
mardi 1 mars 2005
Statut
Membre
Dernière intervention
15 mars 2005

Ben j'en sais rien dans le code il y en a une mais il me fais toujours l'erreur.
Il faudrait que je puisse lèutiliser le plus tot possible

Si y en a un qui peut m'aider je lui balance tout le code c pas tres long !

merci

FLO
Messages postés
549
Date d'inscription
samedi 6 septembre 2003
Statut
Membre
Dernière intervention
6 mars 2010

Bonsoir,



Poste toujours, on va voir ...

Matt...
Messages postés
13
Date d'inscription
mardi 1 mars 2005
Statut
Membre
Dernière intervention
15 mars 2005

Le voila : c vrai que ca fait bourrin mais je pense que l'erreur est toute conne enfin j'espere:

#include <stdio.h>
#include <stdlib.h>
#include <math.h>


struct image {unsigned char *p;int x; int y;int bpp;};


struct image* readpnm(FILE *f)
{struct image *pict;
char s[10],t[10],c;
long i;
fscanf(f,"%s",s); /* P5 */
/* printf("%c\n",s[0]); */
if (s[0]!='P') return(NULL);
c=fgetc(f); /* remove carriage return at end of P5 */
/* printf("%c\n",c); */
c=fgetc(f); /* 1st char of new line */
while (c=='#') { /* remove all lines starting with '#' */
if (c=='#') while (c!=10) /* remove 1 line from # to EOL=chr(10) */
{c=fgetc(f); /*printf("%c",c);*/ }
c=fgetc(f); /* 1st char of next line */
}
pict=(struct image*)malloc(sizeof(struct image));
fscanf(f,"%s",s);
sprintf(t,"%c%s",c,s);pict->x=atoi(t);
fscanf(f,"%s",s);pict->y=atoi(s);
fscanf(f,"%s",s);pict->bpp=atoi(s);
/* printf("%d %d %d\n",pict->x,pict->y,pict->bpp); */
pict->p=(unsigned char*)malloc(sizeof(unsigned char)*pict->y*pict->x);
for (i=0;iy*pict->x;i++) pict->p[i]=fgetc(f);
return(pict);
}


void writepnm(FILE *f,struct image *pict)
{long i;
fprintf(f,"P5\n%d %d\n%d\n",pict->x,pict->y,pict->bpp);
for (i=0;iy*pict->x;i++) fputc(pict->p[i],f);
fputc(pict->p[i],f); /* xv complains 'file truncated' otherwise */
}


struct image* houghline(struct image *pict)
{struct image *pictout;
long i=0;int psize,x,*tmpi,max;
float dtheta,theta,*smat,*cmat,tmp;
if (pict->yx) psize=pict->y; else psize=pict->x; /* square(min) */
dtheta=3.1415926535/(float)(psize);
smat=(float*)malloc(sizeof(float)*psize);
cmat=(float*)malloc(sizeof(float)*psize);
pictout=(struct image*)malloc(sizeof(struct image));
pictout->x=psize;pictout->y=psize;;pictout->bpp=255;
pictout->p=(unsigned char*)malloc(sizeof(unsigned char)*psize*psize);
tmpi=(int*)malloc(sizeof(int)*psize*psize);
for (i=0;ip[i] > (pict->bpp>>1) ) /* only look important points */
{/* printf("/ %ld - %ld i %ld\n",i/psize+1,i%psize,i); */
/* ^^^^^^ print interesting point ccords */
for (x=0;x>1))*smat[x]+
(float)(i%psize-(psize>>1))*cmat[x]+(float)(psize>>1);
/* tmp[] is h2 */
if (( (int)rint(tmp)0) )
tmpi[(int)rint(tmp)*psize+x]++;
}
}
}
for (i=0;imax) max=tmpi[i];
for (i=0;ip[i]=(tmpi[i]*255)/max;


return(pictout);
}


int main(int argv,char **argc)
{struct image *pict,*output;char filename[20];
FILE *f;
if (argv==1) {printf("pgm2hough [infile [outfile]]\n");
printf("filename ");scanf("%s",filename);}
else sprintf(filename,"%s",argc[1]);
f=fopen(filename,"r");if (f==NULL) exit(1);
pict=readpnm(f);
fclose(f);
output=houghline(pict);
if (argv>2) sprintf(filename,"%s",argc[2]);
else sprintf(filename,"%s.hough",argc[1]);
f=fopen(filename,"w");
writepnm(f,output);
fclose(f);
}

FLO
Messages postés
196
Date d'inscription
mercredi 6 août 2003
Statut
Membre
Dernière intervention
1 mai 2009
2
salut, j'ai essayé ton code sous visual C++ 6. is à part une erreur de déclaration de ta fonction rint, le code fonctionne. Il y quatre quatre warning mais ça passe.

LaPatoshe
Messages postés
13
Date d'inscription
mardi 1 mars 2005
Statut
Membre
Dernière intervention
15 mars 2005

Tu as crée une win32 console application type hello world ?

FLO
Messages postés
13
Date d'inscription
mardi 1 mars 2005
Statut
Membre
Dernière intervention
15 mars 2005

J'ai essayé et moi aussi j'ai une erreur sur la declaration de rint et du coup il ne compile pas il faut le declarer comment et ou ??????

je suis a la rue

FLO
Messages postés
196
Date d'inscription
mercredi 6 août 2003
Statut
Membre
Dernière intervention
1 mai 2009
2
J'ai effectivement utilisé une ouverture de nouveau programme en mode console.
Mais en fait, je n'ai pas compris ce qu'étais rint. C'est pas un mot clef, donc cela doit être une fonction à toi , mais apparement tu ne l'a déclaré créé nul part

LaPatoshe
Messages postés
549
Date d'inscription
samedi 6 septembre 2003
Statut
Membre
Dernière intervention
6 mars 2010

Bonsoir,



Copier/coller dans DEV C++ pas d'erreur ca compile.

(rint arrondi à l'entier le plus proche)

C'est sensé faire quoi ton code ???

Matt...
Messages postés
13
Date d'inscription
mardi 1 mars 2005
Statut
Membre
Dernière intervention
15 mars 2005

Salut Matt

alors si c bon pour toi peux tu me donner la procédure exacte (quel projet créé tu, dans quel fichier colles tu le code enfin tout le detail stp parce que la j'en peut plus avec ce code) que tu emploi pour faire compiler moi j'ai visual C++

a priori rint est inutile, mais bon

merci beaucoup

pour info ce code est la transformee de hough pour la detection de droite dans une image.

FLO
Messages postés
549
Date d'inscription
samedi 6 septembre 2003
Statut
Membre
Dernière intervention
6 mars 2010

Bonsoir,



Remplace rint par ceil ou floor et normalement ca compile mais ce n'est pas tout a fait pareil.

J'ai testé sur VC++
(Projet W32 Console application)
ca compile aussi apres avoir remplacé le rint

4 warnings :

D:\afac\test.cpp(45) : warning C4244: '=' : conversion from 'double' to 'float', possible loss of data

D:\afac\test.cpp(55) : warning C4244: '=' : conversion from 'double' to 'float', possible loss of data

D:\afac\test.cpp(55) : warning C4244: '=' : conversion from 'double' to 'float', possible loss of data

D:\afac\test.cpp(91) : warning C4508: 'main' : function should return a value; 'void' return type assumed



J'ai pas testé le resultat mais ca compile,



Matt...