#1 Le 02/03/2007, à 15:54
- neurtixon
[Resolu] erreur --> called object "ligne" is not a function
J'ai un petit soucie de compilation
voici mon code :
#include <stdlib.h>
#include <stdio.h>
#include <SDL/SDL.h>
#define LARGEUR 640
#define HAUTEUR 480
void setPixel(SDL_Surface *surface, int x, int y, Uint32 pixel);
void ligne(SDL_Surface *surface, int x, int epaisseur, Uint32 pixel);
void colone(SDL_Surface *surface, int y, int epaisseur, Uint32 pixel);
void grille(SDL_Surface *surface, int ligne, int colone, Uint32 pixel);
int main(int argc, char *argv[])
{
SDL_Surface *ecran = NULL;
SDL_Init(SDL_INIT_VIDEO); // Initialisation de la SDL
ecran = SDL_SetVideoMode(640, 480, 32, SDL_HWSURFACE);
SDL_WM_SetCaption("Nom de la fenetre", NULL);
SDL_FillRect(ecran, NULL, SDL_MapRGB(ecran->format, 0, 0, 0));
SDL_LockSurface(ecran);
grille(ecran,2,2, SDL_MapRGB(ecran->format, 0, 255, 0));
SDL_UnlockSurface(ecran);
SDL_Flip(ecran);
getchar(); // met en pause le programme
SDL_Quit(); // Arrêt de la SDL
return EXIT_SUCCESS; // Fermeture du programme
}
void ligne(SDL_Surface *surface, int x, int epaisseur, Uint32 pixel)
{
int i, y;
for(i=x;i<=epaisseur+x;i++)
{
for(y=0;y<=HAUTEUR-1;y++)
{
setPixel(surface,i,y,pixel);
}
}
}
void colone(SDL_Surface *surface, int y, int epaisseur, Uint32 pixel)
{
int i, x;
for(i=y;i<=epaisseur+y;i++)
{
for(x=0;x<=LARGEUR-1;x++)
{
setPixel(surface,x,i,pixel);
}
}
}
void grille(SDL_Surface *surface, int ligne, int colone, Uint32 pixel)
{
int pxligne, pxcolone, i;
pxligne=(HAUTEUR-3*(ligne-1))/ligne;
printf("\ntaille ligne px:%d",pxligne);
for(i=1;i<=ligne-1;i++)
{
ligne(surface,(pxligne*i+i*3),3,pixel);
}
pxcolone=(LARGEUR-3*(colone-1))/colone;
printf("\ntaille colone px:%d",pxcolone);
for(i=1;i<=colone-1;i++)
{
colone(surface,(pxcolone*i+i*3),3,pixel);
}
}
void setPixel(SDL_Surface *surface, int x, int y, Uint32 pixel)
{
int bpp = surface->format->BytesPerPixel;
Uint8 *p = (Uint8 *)surface->pixels + y * surface->pitch + x * bpp;
switch(bpp) {
case 1:
*p = pixel;
break;
case 2:
*(Uint16 *)p = pixel;
break;
case 3:
if(SDL_BYTEORDER == SDL_BIG_ENDIAN) {
p[0] = (pixel >> 16) & 0xff;
p[1] = (pixel >> 8) & 0xff;
p[2] = pixel & 0xff;
} else {
p[0] = pixel & 0xff;
p[1] = (pixel >> 8) & 0xff;
p[2] = (pixel >> 16) & 0xff;
}
break;
case 4:
*(Uint32 *)p = pixel;
break;
}
}
tous n'est pas important mais j'ai un soucie sur la fonction grille.
J'ai ecrit la fonction ligne est la fonction colone. Utilisé dans le main elles fonctionnent bien.
J'ai voulus les utiliser dans une fonction grill et la gcc me renvoie ce message :
mainc.c: Dans la fonction "grille" :
main.c:73: erreur: called object "ligne" is not a function
main.c:81: erreur: called object "colone" is not a function
je ne comprend pas
Dernière modification par neurtixon (Le 03/03/2007, à 19:28)
google chrome ... ouai et sinon on attend la version 1.0
au lieu de nous faire tester la version 0.2
parce que la beta 0.2 est pas tres aboutis quand meme
Hors ligne
#2 Le 02/03/2007, à 18:04
- best_friend_fr
Re : [Resolu] erreur --> called object "ligne" is not a function
Salut
Le problème, c'est que tu as dans ta fonction grille des variables locales qui s'appellent aussi ligne et colone (au passage, c'est colonne).
Donc, il y a confusion au niveau de la compilation...
sudo apt-get replace langage_sms by grammaire orthographe ponctuation
La documentation est avant tout faite pour ceux qui posent les questions, et non ceux qui y répondent
Best_friend_fr
Hors ligne
#3 Le 03/03/2007, à 19:27
- neurtixon
Re : [Resolu] erreur --> called object "ligne" is not a function
autant pour moi merci beaucoup
google chrome ... ouai et sinon on attend la version 1.0
au lieu de nous faire tester la version 0.2
parce que la beta 0.2 est pas tres aboutis quand meme
Hors ligne