【问题标题】:Undefine a function-like macro in C?在 C 中取消定义类似函数的宏?
【发布时间】:2013-04-11 20:51:17
【问题描述】:

我正在尝试对 glibc 进行一些修改,我想知道是否可以重新定义类似函数的宏?

例如,<tgmath.h> 具有以下宏:

#define expm1(Val) __TGMATH_UNARY_REAL_ONLY (Val, expm1)

如何将expm1 重新定义为:

#define expm1(Val) __TGMATH_UNARY_REAL_IMAG (Val, expm1, cexpm1)

我想我必须取消之前的定义,但我不知道具体该怎么做。

【问题讨论】:

    标签: c macros c-preprocessor glibc


    【解决方案1】:

    没错。只需先取消定义即可。

    #ifdef expm1
    #undef expm1
    #endif
    
    #define expm1(Val) __TGMATH_UNARY_REAL_IMAG (Val, expm1, cexpm1)
    

    【讨论】:

    • 改进答案:如果之前已定义,只需取消定义即可。
    • @Vincent,这有什么好处?结果将完全相同,即 expm1 此后未定义。
    • @Vincent 已为您添加。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2012-04-28
    • 2020-01-09
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多