Я реализую небольшую программу на C, которая использует общую библиотеку под названием libhelper.so. «libhelper.so» определяет структуры в это час-файл, но, к сожалению, в зависимости от целевой системы этих определений различны (libhelper.so всегда обеспечивается системой, а не сам):1 struct с двумя различными определениями (или динамическими структурами)
системы A:
struct theStruct {
int fd;
unsigned int flags;
struct config config; // only in System A
int foo; // in both systems
int bar; // only in System A
};
система B:
struct theStruct {
int fd;
unsigned int flags;
int foo; // in both systems
int foobar; // only in system B
};
В моей программе, я думал, что я просто определить, что сам-структуру, как это:
struct theStruct {
int fd;
unsigned int flags;
struct config config; // only in System A
int foo; // in both systems
int foobar; // only in system B
int bar; // only in System A
};
В результате вызова функции в «libhelper.so» Я получил экземпляр «theStruct», и теперь я, хотя я могу просто проверить, если «theStructInstance-> бар» или «theStructInstance-> foobar "заполняется действительным значением, чтобы определить, какая реализация была использована библиотекой.
Но кажется, что я получаю только значения, подобные 1 ... 6, которые выглядят как позиция поля в структуре.
Есть ли у кого-нибудь идеи, как я могу это сделать?
You не упоминайте, как назначается целевая система и как используются функции в libhelper.so. Вопрос также в том, существуют ли другие структуры и определяет и другие вещи, которые зависят от целевой системы. Не могли бы вы предоставить дополнительную информацию об этом? –