Моя программа содержит несколько структур, которые имеют только один общий параметр. Пример:Есть ли способ узнать, какой тип структуры указывает указатель?
struct first {
var a;
var b;
var common_var;
var c;
};
struct second {
var d;
var common_var;
var e;
var f;
};
«common_var» является параметром, который все имеют в Структуры общего, но он не появляется в том же порядке для различных структур. В первой-структуре это третья переменная, а во второй-структуре это вторая переменная.
Теперь у меня есть функция, которая принимает указатель-на-void как аргумент. Я хочу передать указатели на любую из этих структур, на эту функцию и сделать материал на основе «common_var» -переменной.
void main()
{
struct first * pFirst;
theFunctionIMentioned(pFirst);
}
void theFunctionIMentioned(void * p)
{
/* Get hold of "common_var" parameter somehow. */
/* Do something based on the "common_var" parameter. */
}
Если «common_var» была первой записью во всех структурах, это не было бы проблемой. Однако я действительно хочу избежать этого.
Итак, вопрос: могу ли я как-нибудь выяснить, является ли аргумент функции (void * p) указателем на первую-структуру или указателем на вторую-структуру?
EDIT 1: Проблема заключается в том, что эта программа имеет интерфейс, который позволяет (косвенно, конечно) для пользователя, чтобы «решить», что структура указатель передается в функцию. Если пользователь выполняет действие A, то программа передает указатель на первый в функцию. Если пользователь выполняет действие B, он передает указатель на секунду функции. Однако программа не может (ни при каких обстоятельствах) знать, было ли выполнено действие A или действие B пользователем. Таким образом, в основном, единственное, что я «знаю» во время программирования, это то, что аргумент, переданный в «theFunctionIMentioned()», является указателем на структуру, содержащую «common_var». Я привык программировать объектно-ориентированный, и в этом случае я бы решил это, используя какой-то интерфейс-механизм. Наверное, я надеюсь, что будет такая же кодовая техника в C.
Спасибо за ответ! Проблема в том, что во время программирования я не знаю, какой указатель передан. – pose