Hirdetés

Új hozzászólás Aktív témák

  • buherton
    őstag

    Olyat lehet csinálni, hogy senki nem írhat a struktúrába.

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

    typedef struct
    {
    int ifoo;
    char cfoo;
    } fooTypeDef;

    int get(const fooTypeDef * const foo)
    {
    int i = sfoo->ifoo; //működnie kellene, ha csak ez van a függvény törzsben
    sfoo->cfoo = 'd'; // erre viszont hibát kell, hogy dobjon, mert konstans változóba nem lehet írni
    }

    int main(void)
    {
    fooTypeDef sfoo;

    sfoo.ifoo = 10;
    sfoo.cfoo = 'a';
    get(&sfoo);

    return 0;
    }

    Nincs nálam fordító, így nem tudom kirpróbálni, hogy tényleg működik-e.

    Fene a jó dolgod. Szívesen foglalkoznék főállásban ilyennel, csak sajnos más fele vitt a sors. Most is körülöttem ilyennel foglalkoznak csak én más projekten vagyok.

    Ami kimaradt: így a get függvények belül egyik adattagot sem lehet írni, csak és kizárólag olavsni. Az set-get-es függvényeknek azaz előnyük, hogy szabadon lehet változtatni az összes adattagját, viszont get a függvénnyel egyesével tudsz értékeket olvasni. Kivéve ha nem kókányolsz íly módon:

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

    typedef struct
    {
    int ifoo;
    char cfoo;
    } fooTypeDef;

    int get(const fooTypeDef * const foo, int * const ibar, char * const cbar)
    {
    *ibar = sfoo->ifoo;
    *cbar = sfoo->cfoo;
    }

    int main(void)
    {
    fooTypeDef sfoo;

    sfoo.ifoo = 10;
    sfoo.cfoo = 'a';

    int ibar;
    char cbar;

    get(&sfoo, &ibar, &cbar);
    printf("%i %c", ibar, cbar);

    return 0;
    }

    Vagy valami ilyesmi lesz.

Új hozzászólás Aktív témák