Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

Arrays of pointers to arrays?

I'm using a library which for one certain feature involves variables like so:

extern const u8 foo[];
extern const u8 bar[];

I am not allowed to rename these variables in any way.

However, I like to be able to access these variables through an array (or other similar method) so that I do not need to continually hardcode new instances of these variables into my main code.

My first attempt at creating an array is as follows:

const u8* pl[] = {
    &foo,
    &bar
};

This gave me the error cannot convert 'const u8 (*)[]' to 'const u8*' in initialization, and with help elsewhere along with some Googling, I changed my array to this:

u8 (*pl)[] = {
    &foo,
    &bar
};

Upon compiling I now get the error scalar object 'pl' requires one element in initializer.

Does anyone have any ideas on what I'm doing wrong? Thanks.

like image 835
unrelativity Avatar asked Dec 23 '22 03:12

unrelativity


1 Answers

An array of pointers to arrays only works if foo and bar have exactly the same size, and that size is known at compile time in your translation unit.

const u8 (*pl[])[32] = {&foo, &bar};

If that is not the case, you must use an array of pointers to bytes.

const u8 *pl[] = {foo, bar};
like image 130
fredoverflow Avatar answered Jan 06 '23 03:01

fredoverflow