Limitations on the Use of Strings in Unions
In Tibbo C, unions cannot include string members or member structures, whose members include strings:
Tibbo C
struct packet_x{ unsigned char packet_type; string dt(20); //here is a member string }; packet_x p_x; //a structure with a string member -- this is OK ... union packet{ packet_x p_x; //this will generate an error (not a POD-type") -- packet_x has a string member ... }; struct mega_struct{ packet_x p_x; //this member is a structure with a string member -- this is OK ... };
The reason for this limitation is that string variables include metadata (current length and capacity), which could potentially become invalid as a result of union manipulation (for example, it would be possible to set current length > capacity).
The related compiler error looks like this in the Output pane:
(prj)\c.tc(19) : error C1203: invalid union member type: 'struct p_x' is not a POD-type
"POD" stands for "plain old data." Strings contain metadata, so they are not "plain old data."