У меня есть следующие операторы в программе на C, и они не могут быть изменены:
struct struct_handle;
struct struct_handle *com_Connect(const char *val1, void *priv, int timeout_msec, enum com_ErrorCodes *com_errno);
Я создаю эту функцию:
void foo(struct_handle *handle)
{
enum com_ErrorCodes com_errno;
do
{
handle = com_Connect("val1", NULL, 10000, &com_errno);
if(handle == NULL)
{
//ERROR handle is NULL
}
}
while(handle == NULL);
//HERE handle is not NULL
}
Это основная функция:
int main(int argc, char const *argv[])
{
struct struct_handle *handle;
foo(handle);
if(handle == NULL)
{
//ALWAYS handle IS NULL
}
return 0;
}
Функция, которую я создаю foo (), состоит в том, чтобы отправить «дескриптор» и получить его, как только он отличается от NULL, я знаю, что он отличается от NULL, потому что функция возвращает, и я проверил содержимое внутрифункция.Проблема в том, что когда я хочу занять этот «дескриптор» за пределами функции, он всегда говорит мне, что он равен NULL, что заставляет меня думать, что проблема в том, что когда я возвращаюсь из функции, я неправильно получаю содержимое указателя.Как правильно его получить?