This discussion has been locked.
You can no longer post new replies to this discussion. If you have a question you can start a new discussion

Placing size of array at start of array

Hi all,
I am working with the TI TUSB3200, trying to modify their example code for our own USB device. USB requires many tables which start with a length byte. I would like to use the sizeof operator to calculate this for me, as shown here:

byte code rictest[] =
{
	sizeof(rictest),
	1,
	2
};
This gives the error
warning C198: sizeof returns 0
, so plainly the compiler only does a single pass through the code, and does not know the array size until it has finished parsing the entire array definition. :(

Is there any other way to achieve this? I presume it would be possible with some sort of pre-processor macro to count the number of elements manually before defining the aray...

Parents
  • A very neat trick Niels, I'll remember that in future.
    It would probably be possible to base a solution on this trick. I now find that externally linked modules needed to know the length also, currently it is defined in a .H file. I could modify the external modules to read the length from the array, but I might just stick with writing a utility to auto-genaerate the .c and .h files, with the length calculated automatically and inserted into the source. This will make the source easier to read (& understand) when the project is complete.

Reply
  • A very neat trick Niels, I'll remember that in future.
    It would probably be possible to base a solution on this trick. I now find that externally linked modules needed to know the length also, currently it is defined in a .H file. I could modify the external modules to read the length from the array, but I might just stick with writing a utility to auto-genaerate the .c and .h files, with the length calculated automatically and inserted into the source. This will make the source easier to read (& understand) when the project is complete.

Children
No data