У меня есть матричная структура:
typedef struct Matrix
{
float m[16];
} Matrix;
Когда я пытаюсь вызвать эту функцию:
memcpy(m->m, MultiplyMatrices(m, &translation).m, sizeof(m->m));
Я получаю сообщение об ошибке во время компиляции:
error: недопустимое использование массива, отличного от lvalue
MultiplyMatrices возвращает матрицу.
Я получаю эту ошибку, только если использую gcc для компиляции файла в объект, если я использую g ++ для компиляции объекта, я не получаю ошибки.
Я даже не уверен, что означает ошибка, у меня такое чувство, что она связана с массивом, хранящимся в матрице, возвращаемой MultiplyMatrices.
Если вам нужно увидеть больше кода, дайте мне знать.
Это код взят из этого руководства: OpenGL Book Глава 4
ps Я хотел бы сохранить этот код в строгом соответствии с iso / ansi, однако, если нет другого решения, тогда мне просто придется с ним разобраться.
РЕДАКТИРОВАТЬ: В итоге я создал временную матрицу, а затем скопировал массив.
Matrix tempMatrix;
...
tempMatrix = MultiplyMatrices(m, &translation);
memcpy(m->m, tempMatrix.m, sizeof(m->m));