如何“#define”结构字段或结构名称

时间:2011-04-18 20:55:11

标签: c c-preprocessor

我想做类似的事情:

    int  desc = -1;
    if ( DB_DBM_HSEARCH == 1 )  {    desc = db->fd  }   else desc = db->dbm_pagf;

由于编译器错误,这是不可能的。

是否可以执行以下操作:

   #define DESC db->fd     //and then
    int desc = DESC;

2 个答案:

答案 0 :(得分:1)

你可以,但不要使用宏来做这类事情,只需使用命名良好的变量。

答案 1 :(得分:1)

不确定。虽然我认为使用宏函数这是一个更合适的方法(所以你可以根据需要改变你的变量名)。假设DB_DBM_HSEARCH is a macro

/* conditionally define the macros */
#if DB_DBM_HSEARCH == 1
#  define DESC(db) (db)->fd
#else
#  define DESC(db) (db)->dbm_pagf
#endif

/* then to initialize */
int desc = DESC(db);