如何在C中找到const声明数组的大小?

时间:2019-05-17 20:15:08

标签: c arrays

在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 个答案:

答案 0 :(得分:4)

file1.c中,导出长度:

const size_t myArrayLength = sizeof(myArray);

然后在某处(在file1.c的头文件中或直接在file2.c中)添加声明,例如:

extern const size_t myArrayLength;