У меня есть следующий код:Какой тип является ссылкой на переменную массива?
/*
* Pointer to a function that reads a codesegment
*/
typedef bool (*BRCS)(void *, uint32, uint64 *, uint64 *, const char **, const char **);
BRCS get_prog_id;
/*
* 'get_prog_id' is loaded from a dynamic library
*/
uint64 start_o;
uint64 length_o;
char prog_id[256];
char err[256];
get_prog_id(NULL, 0, &start_o, &length_o, &prog_id, &err);
Когда я запускаю мой компилятор, я получаю следующие предупреждения:
passing argument 5 of get_prog_id from incompatible pointer type
passing argument 6 of get_prog_id from incompatible pointer type
Таким образом, он жалуется, что у меня нет char **
для моих последних двух аргументов ,
Я смущен. Мое понимание заключалось в том, что переменная, представляющая массив из TYPES
, эквивалентна указателю на TYPE
. Таким образом, применение оператора &
даст вам указатель на указатель на TYPE
.
Что мне здесь не хватает?
Является ли это константой? –
Разве это не вопрос постоянной корректности? Т.е. добавление const перед типом char заставляет его работать? –