首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >我们可以在结构中使用宏吗?

我们可以在结构中使用宏吗?
EN

Stack Overflow用户
提问于 2014-04-07 14:20:46
回答 2查看 54关注 0票数 0

这段代码取自Accessing SPI Devices in Linux

代码语言:javascript
复制
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是一种结构吗?

这是什么?我们还有if insde结构吗?在变量前是否有'.;‘的意义?我知道‘’用于访问结构元素,但在此之前没有任何内容。

EN

回答 2

Stack Overflow用户

发布于 2014-04-07 14:25:34

  1. 宏是一种在编译前编辑文本的方法,在编译器解析代码并找出结构之类的东西之前进行处理。在这种情况下,当编译代码时,modalias行要么在那里,要么不在。
  2. 本例中的.用于根据字段的名称初始化字段。这是用于此目的的特殊语法。
票数 2
EN

Stack Overflow用户

发布于 2014-04-07 14:25:07

{}的内容正在初始化结构的属性。

#ifdef块在结构中是完全合法的,因为编译器永远看不到它;预处理器将根据CONFIG_SPI_SPIDEV的状态将块的内容保留在其中或将其删除。Windows API对一些结构执行类似的操作,使用#ifdef块添加或删除一些成员。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/22904934

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档