• [^] # Re: Le C++ peut être simple

    Posté par . En réponse au journal Un langage pour les nuls? Le langage D!. Évalué à 2.

    Oups. Mea Culpa. J'ai mal regardé.

    Si j'ai :

    void f(void) {
    ____char tab[42];
    ____printf("sizeof(tab) == %lu\n", sizeof(tab));
    }

    J'ai bien 42 en retour. Par contre, de cette manière :

    void f(char tab[42]) {
    ____printf("sizeof(tab) == %lu\n", sizeof(tab));
    }

    La fonction m'affiche bien <taille d'une adresse char *>.

    Et effectivement, d'après la FAQ de fclc, même si pour déclarer officiellement un tableau multi-dimensionnel en passage de paramètre à une fonction, il faut faire quelque chose du genre

    void f(char tab[42][S1][S2]....[Sn]) { ... }

    Au final, le compilateur voit bien le tableau comme étant
    void f(char (*tab)[S1][S2]...[Sn]) { ... }
    Mais par contre déclarer les autres dimensions est nécessaire pour ne pas avoir à simuler toutes les dimensions à la main.

    Enfin, c'est ce que je comprends de ce qui est écrit là :
    http://docs.mandragor.org/files/Programming_languages/C/fclc(...)