Как я могу найти размер объявленного const массива в C?

В 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 ответ


В file1.c экспортируйте длину:

const size_t myArrayLength = sizeof(myArray);

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

extern const size_t myArrayLength;

Есть идеи?

10000