0

長さゼロの配列の使用法を知っています。以下の使用法が許容されるかどうかを知りたいです。

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

4

2 に答える 2