In meiner C-Programmierung mit, I opaque-Zeiger verwende als eine Möglichkeit struct Abstraktion und Einkapselung von meinem Code zu erzwingen, in dieser Weise:einen opaken Zeiger auf einen nicht-Typen struct
interface_header.h:
typedef struct s_mytype t_mytype;
defs_header.h:
struct s_mytype
{
/* Actual definition of the struct */
};
Mein Problem ich eine einfache Art, wie t_mytype
(char
zum Beispiel) verwenden möchten, aber nicht informieren die interfa ce darüber. Ich kann nicht einfach typedef char t_mytype
verwenden, da das die Interna des Typs freilegen würde. Ich könnte einfach Void-Zeiger verwenden, aber auf Kosten der Typprüfung, und das würde ich lieber vermeiden.
Doing zwei typedef wird auch nicht arbeiten, seit dem eine typedef redefinition with different types
aus dem Compiler werfen.
Ich überlege auch, eine Struktur mit nur einem Mitglied zu machen, was mein einfacher Typ sein wird, aber wäre das ein Overkill?
Vielen Dank für Ihre Antworten.
Wenn Sie einen undurchsichtigen Typ benötigen, sind Strukturen erforderlich. Entscheiden Sie, ob Opakheit oder Einfachheit wichtiger ist. Denken Sie daran, dass Sie Zeiger herumreichen werden. –
Verwenden Sie das einzelne Mitglied. Es ist ein bisschen Standard in Ihrer * Quelle *, aber der kompilierte Code sollte nicht anders sein. –
Können Sie etwas Ähnliches tun, wie 'sockaddr' und' sockaddr_in' implementiert werden? – MFisherKDX