je la structure de données suivante dans C:problème lors de la coulée en C
typedef struct {
void* buffer;
...
} SharedMemory;
J'ai défini un sharedMemoryBuffer qui contiendra un tableau de SharedMemory struct:
sharedMemoryBuffer = createSharedMemory("/xxxyz", NUM_BLOCKS * sizeof(Block));
mon problème est maintenant essayer de lire dans la mémoire partagée un bloc dans une position donnée. Je pensais que ce qui suit devrait être suffisant, mais le compilateur C est plaignais:
Block* block = (Block*)sharedMemoryBuffer->buffer[readPosition];
L'erreur est:
Invalid use of void expression.
Comment dois-je jeter la dernière ligne de code tel que le compilateur ne crie pas à moi à propos de cette ligne?
Merci
Basé sur les lignes que vous avez fournies, cela ressemble à 'void * buffer;' devrait être réellement 'Block * buffer;' ici. – asveikau
Oui, il devrait. Le problème est que j'ai conçu cette structure pour qu'elle puisse être utilisée dans d'autres situations. Existe-t-il un autre moyen de coder en C de sorte que je puisse utiliser ma structure SharedMemory avec plusieurs types? char *, int *, etc? Quelque chose comme des génériques en C#? –
Pas vraiment. C'est assez bon pour la plupart des situations. Si vous aviez du C++, vous pourriez utiliser des modèles mais je ne veux pas être le type "Si vous aviez C++, vous pourriez ...". C'est assez bon pour la plupart des programmeurs C compétents. –