簡體   English   中英

在另一個結構中具有靈活數組成員的結構

[英]a struct with a flexible array member in another struct

以下代碼有效嗎?

struct foo {
    int a;
    int b[];
};

struct bar {
    int c;
    struct foo d;
};

struct bar *x = malloc(sizeof(struct bar) + sizeof(int [128]));

對我來說似乎沒問題,但我有點懷疑,因為如果我這樣做,編譯器不會抱怨:

struct bar {
    struct foo d;
    int c;
};

這不好。 第6.7.2.1節(在1570年),第3點說

3結構或聯合不應包含具有不完整或函數類型的成員(因此,結構不應包含其自身的實例,但可包含指向其自身實例的指針),除了具有更多結構的結構的最后一個成員一個命名成員可能有不完整的數組類型; 這樣的結構(以及可能遞歸地包含這種結構的成員的任何聯合)不應是結構的成員或數組的元素。

因此,具有靈活數組成員的struct可能不是另一個結構的一部分。

(但是,如果編譯器接受它,它可能作為結構的最后一個成員。)

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM