Problem with sizeof() when using external arrays.

取消
显示结果 
显示  仅  | 搜索替代 
您的意思是: 
已解决

Problem with sizeof() when using external arrays.

跳至解决方案
851 次查看
perhojfeldt
Contributor III

Is it something I totally misunderstand. To figure out the size of a const char array I use sizeof(array)-1. Works fine when array is defined in the file where sizeof is used but when used as a external in a header file I get an error. Ide/compiler is Codewarrior version 11.0. I attached the project with the error.

Thanks

Per Højfeldt

Without error.

pastedImage_2.png

With error.

pastedImage_1.png

0 项奖励
1 解答
739 次查看
perhojfeldt
Contributor III

I think I figured out the problem. Use of sizeof() can not be used with an external because the compiler at compile time do not know the size of an external array. Correct me if I'm wrong. Make sense. The solution to the problem is to make a function with sizeof() where the array is defined and then make the function an external. That should work.

 Example that can be declared external.

signed char const caArray[] = "1234";

unsigned char arrsize(void)

{
    return sizeof(caArray)-1;
}

Per Højfeldt

在原帖中查看解决方案

0 项奖励
1 回复
740 次查看
perhojfeldt
Contributor III

I think I figured out the problem. Use of sizeof() can not be used with an external because the compiler at compile time do not know the size of an external array. Correct me if I'm wrong. Make sense. The solution to the problem is to make a function with sizeof() where the array is defined and then make the function an external. That should work.

 Example that can be declared external.

signed char const caArray[] = "1234";

unsigned char arrsize(void)

{
    return sizeof(caArray)-1;
}

Per Højfeldt

0 项奖励