I have a matrix struct:
typedef struct Matrix
{
float m[16];
} Matrix;
When I try to call this function:
memcpy(m->m, MultiplyMatrices(m, &translation).m, sizeof(m->m));
I get an error at compile time saying:
error: invalid use of non-lvalue array
MultiplyMatrices returns a Matrix.
I only get this error if I use gcc to compile the file into an object,
if I use g++ to compile the object I get no error.
I am not even sure what the error means, I have a feeling it has to do with the array stored in the Matrix returned by MultiplyMatrices.
If you need to see more code let me know.
This code is from this tutorial: OpenGL Book Chapter 4
p.s. I would like to keep this code strict iso/ansi, if there is no other solution however, then I'll just have to deal with it.
EDIT: I ended up going with creating a temporary Matrix then copying the array.
Matrix tempMatrix;
...
tempMatrix = MultiplyMatrices(m, &translation);
memcpy(m->m, tempMatrix.m, sizeof(m->m));
See Question&Answers more detail:
os 与恶龙缠斗过久,自身亦成为恶龙;凝视深渊过久,深渊将回以凝视…