在以下代码段中定义宏有什么好处?

时间:2012-05-26 16:24:13

标签: c macros c-preprocessor

假设以下 C 代码:

  #define SOME_MACRO(m)  \
  void (*f)(m);          \
  unsigned int a;        \
  int *self;

然后是一个

的结构
typedef struct _Str {
   SOME_MACRO(whatever)
   char sthg[2];
} STR;

我的问题是:这个设计选择的目的是什么?例如,并不是说我们在间接方面节省了时间。除了尝试模块化_STR

的代码之外,还有什么比这更重要的了

3 个答案:

答案 0 :(得分:3)

我的项目使用该模式来确保每个项目类中都有某些方法/成员(例如,用于编组)。再没有更多的例子,没有办法确认,但这是我的理论。

答案 1 :(得分:0)

SOME_MACRO(m)转换为函数指针,该函数指向不返回任何类型m的一个参数的函数,还有一个unsigned int和一个指向int的指针。我相信这样的设计原因是高度特定于案例的,没有更详细的代码示例,我相信这会用于模块化你提到的代码。

答案 2 :(得分:-1)

仅从您提供的代码中,我也无法做出解释,但它看起来很简单,所以我认为它只是一个新程序员的测试宏因为" SOME_MACRO" =一些宏测试代码...

的含义