C - недопустимое использование массива, отличного от lvalue

У меня есть матричная структура:

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));

7
задан miningold 11 July 2011 в 05:16
поделиться