gpt4 book ai didi

c++ - 如何使用外部值创建表(数组)?

转载 作者:太空宇宙 更新时间:2023-11-04 02:19:15 24 4
gpt4 key购买 nike

我想创建一个包含数据指针、数据大小和数据版本的静态(文件范围)表。问题是数据在外部文件中,但常量在外部文件中。

示例:

文件1.c

    const unsigned char data1[] =
{
0x65, 0xF0, 0xA8, 0x5F, 0x5F,
0x5F, 0x5F, 0x31, 0x32, 0x2E,
0x31, 0xF1, 0x63, 0x4D, 0x43,
0x52, 0x45, 0x41, 0x54, 0x45,
0x44, 0x20, 0x42, 0x59, 0x3A,
0x20, 0x69, 0x73, 0x70, 0x56,
// ...
};
const unsigned int data1_size =
sizeof(data1) / sizeof(data1[0]);
const unsigned int data1_version = 1;

文件2.c

    const unsigned char data2[] =
{
0x20, 0x44, 0x61, 0x74, 0x61,
0x20, 0x52, 0x6F, 0x77, 0x20,
0x3D, 0x20, 0x34, 0x38, 0x12,
//...
};
const unsigned int data2_size =
sizeof(data2) / sizeof(data2[0]);
const unsigned int data2_version = 1;

ma​​in.c

struct Data_Info
{
unsigned char * data_ptr;
unsigned int data_size;
unsigned int data_version;
};

extern const unsigned char data1[];
extern const unsigned int data1_size;
extern const unsigned int data1_version;

extern const unsigned char data2[];
extern const unsigned int data2_size;
extern const unsigned int data2_version;

static struct Data_Info Data_Info_Table[] =
{
// How to set this up??
// The compiler wants constant expressions here,
// and the extern is not considered a constant expression
// This is what I tried:
{ data1, data1_size, data1_version},
{ data2, data2_size, data2_version},
};

int main(void)
{
return 0;
}

我正在使用 Green Hills 编译器 4.2.3。确切的错误信息:

error #28, expression must have a constant value.

请参阅我之前的帖子:
C: External const ints in a array of const struct

注意:包含 C++ 标记,因为这也适用于 C++

最佳答案

你试过了吗? (其中 X 为 0 或 1。)

struct Data_Info    
{
unsigned char const * data_ptr;
unsigned int data_size;
unsigned int data_version;
};

文件X.h

extern const struct Data_Info data_infoX;

文件X.c

const struct Data_Info data_infoX = { dataX, dataX_size, dataX_version };

主.c

const struct Data_Info const * Data_Info_Table[] = 
{
&data_info1,
&data_info2
};

关于c++ - 如何使用外部值创建表(数组)?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/3339547/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com