【问题标题】:Conditionally defining C function macros有条件地定义 C 函数宏
【发布时间】:2026-01-24 00:45:02
【问题描述】:

我想知道如何有条件地定义函数宏。例如,假设我有一个名为SETBIT 的函数宏。如果有人使用我的库不包含一个单独的头文件,其中已经定义了这样的宏函数,我想定义我自己的版本。原因在于不同编译器之间的可移植性。

所以,我知道我可以使用如下常量来做到这一点:

#ifndef X
#define X 10
#endif

我想用函数宏做类似的事情

#ifndef SETBIT
#define SETBIT(port,bit) ((port) |= (1 << (bit)))
#endif

但是,我不相信这会奏效。

【问题讨论】:

    标签: c macros c-preprocessor


    【解决方案1】:

    但是,我不相信这会奏效。

    是什么让你相信这一点?它会起作用(前提是你改正了错字——我想它应该是#ifndef SET_BIT)。

    【讨论】:

    • 是的,它确实有效。我想我认为我需要某处的“函数参数”。哦!
    最近更新 更多