Я хотел бы скрыть требование структуры OpenSSL RSA
от моего заголовка API, поэтому я сделал:
// api.h
typedef struct RSA_key * RSA_key_ptr;
RSA_key_ptr get_rsa_key();
void free_rsa_key(RSA_key_ptr key);
// api.c
#include <openssl\rsa.h> // RSA struct
typedef RSA RSA_key;
RSA_key_ptr get_rsa_key()
{
//return RSA_new();
return (RSA_key_ptr)RSA_new();
}
void free_rsa_key(RSA_key_ptr key)
{
//RSA_free(key);
RSA_free((RSA*)key);
}
Моя проблема в том, что каждый раз, когда я ссылаюсь на RSA
указатель в api.c
Мне нужно выполнить приведение к RSA*
из RSA_key_ptr
для предотвращения несовместимых типов указателей предупреждений.
Я хотел бы найти большеэлегантный способ:
- Избегать явных приведений
- Избегать предупреждений