Imaginons que j'ai 3 différents types de jeux de données dans 3 différents struct:pointeur vide à pointeur struct l'intérieur d'une structure sans déréférencement il
typedef struct
{
int a;
//...
}DATATYPE1;
typedef struct
{
int a;
//...
}DATATYPE2;
typedef struct
{
int a;
//...
}DATATYPE3;
imagine alors je veux un de ces types de données à affecter à un struct principale comme ceci:
typedef struct
{
int b;
void* data;
//...
}OBJECT;
Say Je déclare OBJECT* abc = malloc(sizeof(OBJECT));
et DATATYPE1* dt1 = malloc(sizeof(DATATYPE1));
Est-il possible que je pourrais alors jeter dans quelque chose de code comme ceci:
abc->data = dt1;
puis appelez:
(abc->data)->a;
sans déréférencer le pointeur abc->data
retour à e.g. DATATYPE1* dp = abc->data
puis utilisez dp->a;
1) N'utilisez pas de noms en majuscules pour autre chose que des macros ou des constantes enum. 2) N'utilisez jamais 'void *' sans véritable besoin. Écrivez un code de type sécurité! 3) Comment le compilateur est-il censé connaître le type de votre "void *" sans un casting? 4) Quel est votre problème ** réel ** que vous essayez de résoudre? – Olaf
C'est le point que je ne connais pas. Mais y a-t-il un moyen de travailler comme ça? – Primemaster
Pourrait? Peut-être (si vous pouviez clarifier le point 4). La vraie question est: ** devriez-vous **?Ce qui est plus facile de répondre: ** NON! ** – Olaf