Я работаю над небольшим уровнем абстракции платформы, который я намерен использовать в качестве основы для будущих проектов. Первоначально я следовал примеру SDL и динамически выделял структуру контейнера.
Например, в публичном заголовке:
typedef struct MY_MUTEX MY_MUTEX;
В исходном файле для Windows:
struct MY_MUTEX {
HANDLE handle;
};
MY_MUTEX *MY_CreateMutex() {
MY_MUTEX *m = malloc(sizeof(MY_MUTEX));
...
m->handle = CreateMutex(NULL, FALSE, NULL);
...
}
Но потом я начал задаваться вопросом, могу ли я вообще отказаться от выделения памяти и просто typedef
тип, специфичный для платформы:
#ifdef _WIN32
typedef HANDLE MY_MUTEX;
#else
typedef pthread_mutex_t MY_MUTEX;
#endif
Мне кажется хорошей идеей избежать ненужного выделения памяти, но какие проблемы (если таковые имеются) может привести этот простой метод typedef
? Буду ли я жертвовать большой гибкостью?