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

Auto calculation of array size

Dear all,

For some reason, I need to declare an array like that

#define STRING2_DESCRIPTOR_LENGTH 16
BYTE code product_string_descriptor[] = {
	STRING2_DESCRIPTOR_LENGTH,
	0x03,
	'U', 0x00,
	'S', 0x00,
	'B', 0x00,
	' ', 0x00,
	'H', 0x00,
	'U', 0x00,
	'B', 0x00
};
When I add characters to the array, I also need to increase STRING_DESCRIPTOR_LENGTH manually.
Do you know some way to calculate the size of the array automatically?
I know in assembly, I can do something like that
product_string_descriptor:
	DB	end - $
	DB	0x03,
	DB	'U', 0x00
	DB	'S', 0x00
	DB	'B', 0x00
	DB	' ', 0x00
	DB	'H', 0x00
	DB	'U', 0x00
	DB	'B', 0x00
end:
How about in C?

Parents
  • OK, Then what about the following:

    #define USB_DESC "\03" "USB HUB"
    
    #define USB_DESC_LENGTH (sizeof(USB_DESC) - 1)  /*** -1 for null terminator ***/
    
    static unsigned char code product_string_descriptor[] = {
        USB_DESC_LENGTH,
        USB_DESC
    };

    This compiles just fine on my computer with C51 V7.05.

    Jon

Reply
  • OK, Then what about the following:

    #define USB_DESC "\03" "USB HUB"
    
    #define USB_DESC_LENGTH (sizeof(USB_DESC) - 1)  /*** -1 for null terminator ***/
    
    static unsigned char code product_string_descriptor[] = {
        USB_DESC_LENGTH,
        USB_DESC
    };

    This compiles just fine on my computer with C51 V7.05.

    Jon

Children
No data