[英]Initializing structure by named members
struct
{
int a[5], b;
} game[] =
{
[0].a = { 1 },
[1].a[0] = 2
};
理想情況下,我會找到一些方法來執行以下操作:
struct
{
int a, b;
} foo =
{
.a = 4,
.b = 5
};
我想要對結構進行按名稱初始化的原因是我自己的結構有很多成員,所以我想要更好的清晰度。 我不應該只在單獨的語句中初始化它們,因為這是一個對性能敏感的嵌入式應用程序,其中成員實際上是位域,因此單個 struct init 生成的指令比多個成員初始化少。
哪個 C 標准允許這樣的按名稱成員初始化?
目前尚不清楚您要問什么,但是使用 c99 編譯器,您的第一次嘗試可以寫成
struct
{
int a[5], b;
} game[] =
{
[0] = {.a = { 1 }},
[1] = {.a[0] = 2}
};
我在 C99 下的嵌入式應用程序中做類似的事情。 that is "assigned" to a struct:我有一個名為的變量,它被“分配”給一個結構:
phaseInstill = (PhaseVolumeStatus)
{
.complete = false,
.ticksInstilled = 0,
.volumeInstilled = 0,
.volumeRemaining = instillVolume
};
其中 PhaseVolumeStatus 定義為:
typedef struct
{
Value volumeRemaining; /*!> ml */
Value volumeInstilled; /*!> ml */
Value ticksInstilled; /*!> ticks */
bool complete;
} PhaseVolumeStatus;
我沒有方便的位域示例,但我不記得它在我的任何其他用途中的工作方式有什么不同。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.