如何“ #define”结构域或结构名

|| 我想做类似的事情:
    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;
已邀请:
当然。尽管我认为这是使用宏函数执行此操作的一种更合适的方法(因此您可以根据需要更改变量名)。假设
DB_DBM_HSEARCH
是一个宏:
/* 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);
您可以但不要使用宏来执行此类操作,而只需使用命名良好的变量即可。

要回复问题请先登录注册