Abbiamo un progetto, che consiste in un cluster di codice sorgente C, una libreria C e una libreria C ++. La libreria C ++ dipende solo dalla libreria C, o almeno è quello che sto cercando di ottenere.
C'è un componente della libreria C, chiamato PresetsManager
, contenente:
PresetsManager_init(PresetItemId id);
Gli ID sono assegnati manualmente tramite enum
. In quanto tale, il file, contenente l'enumerazione, risiede all'interno della cartella di origine comune, perché è specifico del progetto.
typedef enum {A, B, C, D, INVALID_VALUE=-1} PresetItemId;
Questo rende la libreria C dipendente dall'origine del progetto per la compilazione. Ho provato a risolvere questo problema spostando il tipo all'interno della libreria e lasciando le costanti enumerate all'esterno, con un nome diverso.
Libreria:
PresetsManager_init(PresetItemId id);
typedef enum {INVALID_VALUE=-1} PresetItemId;
Progetto:
typedef enum {A, B, C, D} PresetItemId_value;
Quindi il problema della compilazione è stato risolto. Ma ora, quando esegui una query sul tipo di PresetItemId
tramite "Vai alla definizione" di Eclipse, non più vengono portati all'elenco delle costanti, cioè all'interno del codice sorgente specifico del progetto.
Come si può realizzare questo disaccoppiamento in modo appropriato?