Gibt es eine Möglichkeit, explizite Umwandlung für typedefs des gleichen Typs zu erzwingen? Ich muss mit utf8 umgehen und manchmal werde ich mit den Indizes für die Anzahl der Zeichen und die Anzahl der Bytes verwirrt. So ist es schön, ein paar typedefs haben:Erzwingen Sie die starke Typüberprüfung in C (type strictness für typedefs)
typedef unsigned int char_idx_t;
typedef unsigned int byte_idx_t;
Mit dem Zusatz, dass Sie eine explizite Umwandlung zwischen ihnen benötigen:
char_idx_t a = 0;
byte_idx_t b;
b = a; // compile warning
b = (byte_idx_t) a; // ok
Ich weiß, dass eine solche Funktion nicht in C existiert, aber vielleicht Sie kennen einen Trick oder eine Compiler-Erweiterung (vorzugsweise gcc), die das tut.
EDIT Ich weiß wirklich noch nicht, wie die ungarische Notation im Allgemeinen. Ich konnte es wegen der Codekonventionen für das Projekt nicht für dieses Problem verwenden, aber ich habe es jetzt in einem anderen ähnlichen Fall verwendet, wo auch die Typen die gleichen sind und die Bedeutungen sehr ähnlich sind. Und ich muss zugeben: Es hilft. Ich würde niemals jede ganze Zahl mit einem Anfangs "i" deklarieren, aber wie in Joels Beispiel für überlappende Typen kann es lebensrettend sein.
Es gibt einen anderen sehr schönen Artikel (Obwohl ich nicht einverstanden bin, goto zu verbieten :)) von [Joel] (http://www.joelonsoftware.com/) benannt [Making Wrong Code Look Wrong] (http://www.joelonsoftware.com/articles/Wrong.html). Ich denke, es ist sehr auf deine Frage bezogen, auch wenn es keine direkte Verbindung gibt. – Ilya
Die "interessanteste" und wichtigste Sache in diesem Artikel, IMHO, ist das Stück über die Geschichte der ungarischen Notation. Veeery interessant ... – Noein