Как я могу найти размер объявленного const массива в C? - PullRequest
4 голосов
/ 17 мая 2019

В file1.c у меня есть массив

const uint8 myArray[] =
{
    0x4b, 0x28, 0x05, 0xbf,   
    ...
    0xff, 0xff, 0xff, 0xff
};

В file2.c мне нужно использовать массив следующим образом:

uint8* buffer = myArray;
uint32 length = ???

Я пробовал length = sizeof(myArray), но это приводит к следующей ошибке:
error: invalid application of ‘sizeof’ to incomplete type ‘const uint8[] {aka const unsigned char[]}’. Поскольку она постоянна, я могу физически подсчитать количество записей, но мне нужно сделать это программно, потому что эта константа, вероятно, будет меняться в дальнейшем при разработке.

1 Ответ

4 голосов
/ 17 мая 2019

В file1.c, экспорт длины:

const size_t myArrayLength = sizeof(myArray);

А затем добавить объявление где-нибудь (в заголовочном файле для file1.c или, может быть, прямо в file2.c), например:

extern const size_t myArrayLength;
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...