gpt4 book ai didi

c - struct 内的非大小数组声明好吗?

转载 作者:太空狗 更新时间:2023-10-29 15:24:11 26 4
gpt4 key购买 nike

<分区>

对于 table_type 的声明,特别是 e[] 是否应该有效:

struct table_type
{
unsigned int8 a;
unsigned int8 b;
unsigned int8 c;
unsigned int8 d;
unsigned int8 e[];
};

struct table_type table[] =
{
{ 0, 1, 2, 3, { 4, 5, 6, 7, 8} },
{ 9, 10, 11, 12, { 13, 14, 15, 16, 17} },
{ 18, 19, 20, 21, { 22, 23, 24, 25, 26} },
{ 27, 28, 29, 30, { 31, 32, 33, 34, 35} },
{ 36, 37, 38, 39, { 40, 41, 42, 43, 44} },
{ 45, 46, 47, 48, { 49, 50, 51, 52, 53} }
};

void main()
{
unsigned int8 i = 0;
unsigned int8 j = 0;

for( i=0; i<6; i++ )
{
printf("\n");
for( j=0; j<=4; j++ )
printf( "i=%u j=%u k=%u\n", i, j, table[i].e[j] );
}
}

所有这一切只是打印出表中每一行的 e 个元素。这是输出,这显然是愚蠢的:

i=0 j=0 k=4
i=0 j=1 k=9
i=0 j=2 k=10
i=0 j=3 k=11
i=0 j=4 k=12

i=1 j=0 k=13
i=1 j=1 k=18
i=1 j=2 k=19
i=1 j=3 k=20
i=1 j=4 k=21

i=2 j=0 k=22
i=2 j=1 k=27
i=2 j=2 k=28
i=2 j=3 k=29
i=2 j=4 k=30

i=3 j=0 k=31
i=3 j=1 k=36
i=3 j=2 k=37
i=3 j=3 k=38
i=3 j=4 k=39

i=4 j=0 k=40
i=4 j=1 k=45
i=4 j=2 k=46
i=4 j=3 k=47
i=4 j=4 k=48

i=5 j=0 k=49
i=5 j=1 k=50
i=5 j=2 k=51
i=5 j=3 k=52
i=5 j=4 k=53

请注意,当i=5 时,它在最后一个 block 中是正确的。当我用 e[5] 替换 e[] 时,输出都是正确的。我正在使用 CCS C 编译器和 Microchip 微 Controller 。我只是好奇这是一个错误还是什么。

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