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
  • You could do something like...

    #include <string.h>
    
    static unsigned char code descriptor [] =
      { 1,2,3,4,5,6,7 };
    
    unsigned char xdata xdescriptor [1 + sizeof (descriptor)] =
      { sizeof (descriptor), };
    
    void main (void)
    {
    memcpy (&xdescriptor[1], descriptor, sizeof (descriptor));
    }
    

    You could then refer to the xdescriptor.

    That would make your life easier but would use CODE AND XDATA.

Reply
  • You could do something like...

    #include <string.h>
    
    static unsigned char code descriptor [] =
      { 1,2,3,4,5,6,7 };
    
    unsigned char xdata xdescriptor [1 + sizeof (descriptor)] =
      { sizeof (descriptor), };
    
    void main (void)
    {
    memcpy (&xdescriptor[1], descriptor, sizeof (descriptor));
    }
    

    You could then refer to the xdescriptor.

    That would make your life easier but would use CODE AND XDATA.

Children
No data