有条件地定义C函数宏

时间:2013-11-11 00:31:11

标签: c macros c-preprocessor

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

所以,我知道我可以使用常量执行此操作,如下所示:

#ifndef X
#define X 10
#endif

我想用函数宏

做类似的事情
#ifndef SETBIT
#define SETBIT(port,bit) ((port) |= (1 << (bit)))
#endif

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

1 个答案:

答案 0 :(得分:3)

  

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

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