我想做类似的事情:
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;
答案 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);