【问题标题】:GCC, C11, How to display a macro calculated value in C? [duplicate]GCC,C11,如何在 C 中显示宏计算值? [复制]
【发布时间】:2020-11-15 20:09:25
【问题描述】:

我试图在 C (gcc, C11) 中显示这个

#define xstr(a) _str(a)
#define _str(a) #a

#pragma message "System clock = " xstr(SYS_CLOCK)

现在 SYS_CLOCK 是一个宏,根据预分频器、除法器等的值进行计算
但是消息没有计算出来

#pragma message: System clock= ((8000000u/4)*50)/4

总比没有好 :) 但实际上,如果我能显示 25000000 Hz,我会非常高兴。

可以用一些预处理魔法来完成吗?

谢谢,

【问题讨论】:

  • 很可能无法完成,因为我知道的所有预处理器都不进行计算。您是否查看了标准以了解需要什么?此外,GCC 文档是怎么说的?如果它的预处理器会进行计算,我希望它会被记录在案。

标签: c gcc macros c-preprocessor


【解决方案1】:

预处理器不计算任何值(#if 需要的除外)。它是在编译期间完成的。一切都在令牌级别完成。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2023-01-06
    • 1970-01-01
    • 2017-08-14
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多