長さゼロの配列の使用法を知っています。以下の使用法が許容されるかどうかを知りたいです。
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