[英]C Nested Structs Initialization
我是一個狂熱的嵌入式 c 程序員。 我最近開始使用 ESP IDF 框架對 ESP32 進行編程。 即使我認為以下代碼正在初始化結構中的結構(不確定); 但由於某種原因,我無法理解在 gpio_config_t +“.mode”中只有一個“.mode”而不是結構名稱的方式和原因。 這只是一個示例,但有幾個類似類型的初始化實例。
例如:
typedef struct example_struct{
int mode;
int pull_up_en;
.
.
}example_struct;
typedef struct gpio_config_t
{
example_struct test;
} gpio_config_t;
不應該按照以下方式進行初始化嗎?
gpio_config_t io_test_config =
{
test.mode = 3;
test.pull_up_en = 1;
etc
};
有人可以澄清一下嗎?
我指的初始化的實際類型:
gpio_config_t io_conf = {
.mode = GPIO_MODE_OUTPUT,
.pull_up_en = 1,
};
您使用的符號的技術術語是指定的初始化程序。 指示符始終以.
或[
,並且初始化程序中沒有分號(直到初始化程序末尾的}
之后)。 您可以通過多種方式初始化該結構,包括:
gpio_config_t io_test_config1 =
{
.test.mode = 3, .test.pull_up_en = 1
};
gpio_config_t io_test_config2 =
{
.test = { .mode = 3, .pull_up_en = 1 }
};
gpio_config_t io_test_config3 =
{
{ 3, 1 }
};
gpio_config_t io_test_config4 =
{
3, 1
};
當您指定-Wmissing-braces
(通常由-Wall
激活)時,最后一個不能用 GCC 干凈地編譯。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.