Я работаю над заголовочным файлом, который объявляет некоторые непрозрачные struct
s, которые должны быть определены в соответствующем C-файле.Вот оно:
decl.h
#ifndef DECL_H
#define DECL_H
typedef struct test_t test;
#endif //
Некоторая библиотека, которая должна использоваться в реализации, определяет другую непрозрачную структуру в своем заголовке lib.h
:
//...
typedef struct _library_struct_t library_struct;
//...
Теперь в моем файле decl.c
я хочу сделать struct test_t
таким же (или совместимым) с library_struct
.Я попробовал это:
decl.c
//...
typedef library_struct test; //error: conflicting types for ‘test’
//...
Но он не компилируется.Таким образом, единственный путь, который я вижу сейчас, это
struct test_t{
library_struct *lib_struct_ptr;
};
Есть ли более короткий или более удобный способ?И test
, и library_struct
непрозрачны.Почему я не могу сделать test
таким же, как library_struct
?Здесь могут быть полезны макросы?