[C] Warning code::blocks, incompatible implicit ...
Répondre à la discussion
Affichage des résultats 1 à 10 sur 10

[C] Warning code::blocks, incompatible implicit ...



  1. #1
    Lechero

    [C] Warning code::blocks, incompatible implicit ...


    ------

    Bonsoir à tous,

    j'ai un programme assez simple (et qui marche sans problème), lors duquel j'utilise les fonctions d'allocation dynamique calloc et free.

    Lors de la compilation, j'ai deux warnings :

    incompatible implicit declaration of built-in function 'calloc'
    incompatible implicit declaration of built-in function 'free'


    Voici mon code :
    Code:
    #include <stdio.h>
    
    void rempli(int *tab, int taille)
    {
        int i;
    
        for (i=0;i<taille;i++) tab[i]=rand()%20;
    }
    
    int main (void)
    {
        int *tab;
        int taille,i=0;
    
        printf("saisir taille tableau ");
        scanf("%d",&taille);
        printf("\n");
    
        tab=(int*)calloc(taille,sizeof(int));
    
        rempli(tab,taille);
    
        while (i<taille)
        {
            printf ("%d ", tab[i]);
            i++;
        }
    
        free(tab);
    
        printf("\n");
        system("PAUSE");
        return 0;
    }
    Merci par avance de vos réponses !

    -----
    A vaincre sans péril, on triomphe sans gloire (Corneille).

  2. #2
    invite765732342432
    Invité

    Re : [C] Warning code::blocks, incompatible implicit ...

    Ajoute au début de ton code:
    #include <stdlib.h>

    Ca devrait mieux marcher

    Ces alertes veulent dire que tu utilises des fonctions qui n'ont pas été déclarées avant leur appel.
    Tant qu'elles sont jointes dans une lib, ça peut passer, mais ce n'est pas très propre...

  3. #3
    fred1599

    Re : [C] Warning code::blocks, incompatible implicit ...

    Il y a 2,5 erreurs

    1) Tu n'inclues pas la bibliothèque time et stdlib

    Code:
    include <time.h>
    include <stdlib.h>
    2) Tu n'utilises pas srand, ce qui implique la même valeur pseudo aléatoire à chaque appel de rand()

    Code:
    srand( time(NULL) );
    3) system("PAUSE") n'est pas portable, remplace le par getchar

    Code:
    getchar();
    Dernière modification par fred1599 ; 12/01/2013 à 16h45.

  4. #4
    Lechero

    Re : [C] Warning code::blocks, incompatible implicit ...

    Ok ok, merci beaucoup !

    Donc dès que j'emploie les fonctions d'allocation, j'inclus stdlib ?

    Et merci aussi pour le time, c'était un oubli bien bête !
    A vaincre sans péril, on triomphe sans gloire (Corneille).

  5. A voir en vidéo sur Futura
  6. #5
    fred1599

    Re : [C] Warning code::blocks, incompatible implicit ...

    Donc dès que j'emploie les fonctions d'allocation, j'inclus stdlib ?
    Oui pour malloc, realloc, ... et aussi pour rand() et srand()

    Le time est là juste pour la graine, la graine permettant d'initialiser le générateur de nombres aléatoires.

  7. #6
    Lechero

    Re : [C] Warning code::blocks, incompatible implicit ...

    Ok, merci !

    J'en profite (au lieu d'ouvrir un nouveau sujet) : je veux faire une fonction qui affiche le'élément maximum d'un tableau, et elle me retourne des valeurs bizarres !

    La voici :
    Code:
    void max(int *tab, int taille)
    {
        int i,maxi,ind=0;
    
        maxi=tab[ind];
    
        for (i=0;i<taille;i++)
        {
            if (maxi<tab[i+1])
            {
                maxi=tab[i+1];
                ind = i+1;
            }
        }
    
    
        printf("\n\nLe plus grand element du tableau est %d, c'est le %deme element.",maxi, ind+1);
    }
    J'ai fais quasi-exactement le même code pour une fonction qui, elle, cherche l'élément minimum dans le même tableau; et elle marche parfaitement !
    A vaincre sans péril, on triomphe sans gloire (Corneille).

  8. #7
    fred1599

    Re : [C] Warning code::blocks, incompatible implicit ...

    J'ai fais quasi-exactement le même code pour une fonction qui, elle, cherche l'élément minimum dans le même tableau; et elle marche parfaitement !
    A mon avis il doit y avoir des problèmes soit dans l'observation de vos codes, soit dans celui de la fonction minimum...

    Vous dépassez la limite du tableau avec tab[i+1], faîtes le sur un papier pour vous en rendre compte.

    Du coup dans votre code vous devez faire attention à cela.

    Code:
    void max(int *tab, int taille)
    {
        int i,maxi,ind=0;
    
        maxi=tab[ind];
    
        for (i=0;i<taille-1;i++) /* taille-1 et pas taille */
        {
            if (maxi<tab[i+1])
            {
                maxi=tab[i+1];
                ind = i+1;
            }
        }
    
    
        printf("\n\nLe plus grand element du tableau est %d, c'est le %deme element.\n",maxi, ind+1);
    }

  9. #8
    Lechero

    Re : [C] Warning code::blocks, incompatible implicit ...

    Effectivement, je n'avais pas fais attention à ça ...

    Surement parce que dans la fonction min (ci-dessous), cela marchait !

    Code:
    void min(int *tab, int taille)
    {
        int i,petit,ind=0;
    
        petit=tab[ind];
    
        for (i=0;i<taille;i++)
        {
            if (petit>tab[i+1])
            {
                petit=tab[i+1];
                ind = i+1;
            }
        }
        printf("\n\nLe plus petit element du tableau est %d, c'est le %deme element.",petit,ind+1);
    
    }
    A vaincre sans péril, on triomphe sans gloire (Corneille).

  10. #9
    Lechero

    Re : [C] Warning code::blocks, incompatible implicit ...

    edit :

    en fait, avec min, pour un très grand tableau, ma solution ne marchait pas non plus ^^

    Merci !!!
    A vaincre sans péril, on triomphe sans gloire (Corneille).

  11. #10
    fred1599

    Re : [C] Warning code::blocks, incompatible implicit ...

    Le problème quand tu lis à un indice dépassant la taille du tableau, c'est que tu puisses lire n'importe quoi, il est donc possible, mais pas à tous les coups que ton résultat puisse être tronqué ou que rien ne se passe. Cependant ça reste un dépassement qu'il faut à tout prix éviter.

Discussions similaires

  1. problème en code blocks
    Par anamir-22 dans le forum Programmation et langages, Algorithmique
    Réponses: 7
    Dernier message: 14/07/2012, 14h58
  2. problème code blocks
    Par invite7167e6ff dans le forum Programmation et langages, Algorithmique
    Réponses: 11
    Dernier message: 14/12/2011, 18h11
  3. problème code blocks
    Par lawliet yagami dans le forum Logiciel - Software - Open Source
    Réponses: 35
    Dernier message: 26/04/2010, 11h48
  4. code:blocks+ gnuplot
    Par invite6f723495 dans le forum Logiciel - Software - Open Source
    Réponses: 1
    Dernier message: 29/03/2010, 15h46
  5. Code::Blocks et Qt
    Par Mendoza dans le forum Logiciel - Software - Open Source
    Réponses: 1
    Dernier message: 20/02/2006, 20h59