【问题标题】:What is the expansion of this GNU C,C++ macro [closed]这个GNU C,C++宏的扩展是什么[关闭]
【发布时间】:2015-01-15 19:20:14
【问题描述】:

这些 C 宏扩展成什么?

#define PERIPH_BASE           ((uint32_t)0x40000000)
#define AHB2PERIPH_BASE       (PERIPH_BASE + 0x08000000)
#define GPIOA_BASE            (AHB2PERIPH_BASE + 0x0000)
#define GPIOB_BASE            (AHB2PERIPH_BASE + 0x0400)

#define BLINK_GPIOx(_N) (GPIO_TypeDef *)(GPIO_BASE +(GPIOB_BASE-GPIOA_BASE)*(_N)))
#define BLINK_PORT_NUMBER(4)

对此的调用是

 GPIO_SetBits(BLINK_GPIOx(BLINK_PORT_NUMBER), BLINK_PIN_MASK(8));

【问题讨论】:

  • 这是简单的文本替换,还是我在这里遗漏了一些微妙之处?
  • 你可以对文件进行预处理,看看会发生什么......
  • 错别字或缺失的行数过多。您可以尝试运行 g++ INPUT_FILE | grep GPIO_SetBits
  • @lonewasp: g++ INPUT_FILE 不会向标准输出写入任何内容。
  • @KeithThompson 是的,你说得对,应该是 cpp INPUT_FILE(仅预处理器调用)

标签: c++ c gnu


【解决方案1】:

使用gcc 编译器的-E 选项查看预处理器输出。 例如:gcc -E program.c -o preprocessOutput.p 然后查看文件preprocessOutput.p的内容

【讨论】:

  • 啊,我正要纠正我的评论。
  • 正在清理 cmets...
猜你喜欢
  • 2021-12-28
  • 2011-03-01
  • 1970-01-01
  • 2013-05-16
  • 1970-01-01
  • 2017-02-09
  • 2017-09-17
  • 2012-02-08
  • 1970-01-01
相关资源
最近更新 更多