此代码取自Accessing SPI Devices in Linux
static struct spi_board_info
spi_stm32_flash_info__dongle = {
#if defined(CONFIG_SPI_SPIDEV)
.modalias = "spidev",
#endif
.max_speed_hz = 25000000,
.bus_num = 3,
.chip_select = 0,
.controller_data = &spi_stm32_flash_slv__dongle,
};
spi_stm32_flash_info__dongle是一个结构?
这里有什么好处?我们有没有其他insde结构?有什么意义'。;在变量之前?我知道 '。'用于访问结构元素,但在'。'之前没有任何内容。
答案 0 :(得分:2)
宏是一种在编译之前编辑文本的方法,并且在编译器解析代码并找出诸如结构之类的东西之前进行处理。在这种情况下,编译代码时,modalias
行将在那里或不在那里。
在这种情况下,.
用于按字段名称初始化字段。它是用于此目的的特殊语法。
答案 1 :(得分:0)
{}
的内容正在初始化结构的属性。
#ifdef
块在结构中是完全合法的,因为编译器永远不会看到它;预处理器将保留块的内容或将其删除,具体取决于CONFIG_SPI_SPIDEV
的状态。 Windows API对某些结构执行类似操作,使用#ifdef
块添加或删除某些成员。