【问题标题】:What this macro is expanded to?这个宏扩展成什么?
【发布时间】:2015-10-26 10:08:08
【问题描述】:

我在C 项目中遇到了这个宏定义。 我在扩展宏时遇到问题。 这里是:

#define PT_THREAD(name_args) char name_args

#define PROCESS_THREAD(name, ev, data)              \
static PT_THREAD(process_thread_##name(struct pt *process_pt,   \
                   process_event_t ev,  \
                   process_data_t data))

一些帮助?谢谢。

【问题讨论】:

  • 几乎所有编译器都能够在预处理器阶段之后停止,因此您可以轻松地看到宏扩展为什么。
  • Seeing expanded C macros的可能重复

标签: c macros


【解决方案1】:

您可以运行gcc -E 以获取预处理器后的结果代码。

在PROCESS_THREAD(foo,bar,baz) 上运行会导致:

static char process_thread_foo(struct pt *process_pt, process_event_t bar, process_data_t baz)

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2021-12-28
    • 2018-09-29
    • 2011-03-01
    • 1970-01-01
    • 2012-02-08
    • 1970-01-01
    • 2022-01-09
    • 2016-04-11
    相关资源
    最近更新 更多