У меня есть 2d буфер, который я хотел бы передать потоку вместе с другими значениями, поэтому мне нужно переместить его в структуру. Когда я пытаюсь это сделать, я не могу снова получить доступ к значениям в моей структуре, и мне нужна помощь.
Вот мой буфер:
void* mybuff[8][16384];
Я хотел бы сохранить указатель на этот 2D-массив в структуре, подобной этой:
typedef struct {
int i;
void *mybuff;
} arg_struct_t;
Однако, если я пытаюсь получить доступ к значениям:
arg_struct_t *args = malloc(sizeof(arg_struct_t));
args->i = index;
args->mybuff = mybuff;
fprintf(stderr, "%p\n", args->mybuff[0][0]);
Я получаю сообщение об ошибке:
main.c:104:47: warning: dereferencing ‘void *’ pointer [enabled by default]
fprintf(stderr, "%p\n", args->mybuff[0][0]);
^
main.c:104:50: error: subscripted value is neither array nor pointer nor vector
fprintf(stderr, "%p\n", args->mybuff[0][0]);
^
Я думаю, что мне нужно больше рассказать С99 о форме данных, которые я хочу вставить в свою структуру, но я не могу понять, как это сделать правильно. Я ценю любую помощь или понимание здесь.