разыменование структуры из (void *) type

Я пытаюсь передать данные с помощью указателя void, а затем привести их к типу (pData *). Что я делаю неправильно? gcc выдает мне

ошибку gcc test.c: запрос члена 'filename' не в структуре или объединении

typedef struct data {
        char *filename;
        int a;
} pData;

void mod_struct(void *data) {
        printf("%s\n",(pData *)data->filename); //error on this line
}

void main() {
        pData *data;
        data = (pData *) malloc(sizeof(pData));
        data->filename = (char *)malloc(100);
        strcpy(data->filename,"testing testing");
        data->a=1;
        mod_struct((void *)&data);
}
7
задан damir 21 March 2011 в 23:57
поделиться