Problem with sizeof() when using external arrays.

cancel
Showing results for 
Show  only  | Search instead for 
Did you mean: 

Problem with sizeof() when using external arrays.

Jump to solution
843 Views
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 Kudos
1 Solution
731 Views
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

View solution in original post

0 Kudos
1 Reply
732 Views
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 Kudos