我知道零长度数组的用法,我想知道以下是否可以接受
struct foo {
int id_num;
bool is_person;
char person_name[0];
char product_name[0];
}foo;
and allocating as follows
#define NAME_SIZE 100
struct foo *data = (struct foo\*)malloc(sizeof(struct foo) + NAME_SIZE);
我有上面用来表示一个人的结构。现在我想用同样的结构来表示一个产品。该结构将根据 is_person 标志引用产品或人员。我不想将最后一个成员放在联合中,因为这将涉及现有代码库中的大量代码更改。因此,我以上述方式对其进行了修改,并对其进行了编译。我想知道这是否是一个正确的用法,因为我要么将它用作人或产品,而不是两者兼而有之,而且我不想将变量名称更改为像char person_or_product_name[0]
. 我还假设它person_name
充当product_name
同一内存区域的标识符。