Я хочу сделать что-то вроде:
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 является макросом :
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);
Вы можете, но не использовать макросы для такого рода вещей, просто используйте переменные с красивыми именами.