I apologize for the ignorance. I have a function
void Color_send(uint8_t (*color)[3], uint16_t len)
The function have as parameter for RGB of ligth any as uint8_t light[100][3];
Solve the problem of how to be able to, when you write a program using predefined values of color. Any as
#define RED {255, 0, 0} #define GREEN {0, 255, 0} #define BLUE {0, 255, 0} ... Color_send( RED, 1); Color_send( GREEN, 1);
But not this works, advice on how to solve the problem?
static const uint8_t RED[3] = {255, 0, 0}; static const uint8_t GREEN[3] = {0, 255, 0}; static const uint8_t BLUE[3] = {0, 0, 255};
You might have to lose the const as the function doesn't indicate if it meddles with the data.
Your problem is not with passing an array of arrays. Your problem is that your program doesn't have such a thing. This
{ 1, 2, 3}
is not an array. It's basically just syntactic garbage unless it appears as the initializer of a variable. You need something like
const uint8_t[][3] RED = { { 1, 2, 3} };
Note the extra pair of { } to explicitly make it a collections of collections (in this case, an array of arrays).
Ahem, make that
const uint8_t RED[1][3] = { { 1, 2, 3} };