Starke Eingabe
C ist eine schwach typierte Sprache, d. h. der Compiler ermöglicht Vorgänge wie Zuweisung und Vergleich zwischen Variablen unterschiedlicher Typen. Beispielsweise ermöglicht C das Umwandeln eines Variablenwerts in einen anderen Typ. Die Möglichkeit, Variablen verschiedener Typen in demselben Ausdruck zu verwenden, fördert Flexibilität und Effizienz.
Eine stark typierte Sprache erzwingt Einschränkungen für Vorgänge zwischen Variablen unterschiedlicher Typen. In diesen Fällen gibt der Compiler einen Fehler aus, der den Vorgang verbietet. Diese strengen Richtlinien für Datentypen sind so konzipiert, dass potenzielle Fehler vermieden werden.
Die Schwierigkeit bei der Verwendung einer schwach typisierten Sprache wie C für Remoteprozeduraufrufe besteht darin, dass verteilte Anwendungen auf mehreren verschiedenen Computern mit unterschiedlichen C-Compilern und unterschiedlichen Architekturen ausgeführt werden können. Wenn eine Anwendung nur auf einem Computer ausgeführt wird, müssen Sie sich nicht mit dem internen Datenformat befassen, da die Daten einheitlich behandelt werden. In einer verteilten Computerumgebung können unterschiedliche Computer jedoch unterschiedliche Definitionen für ihre Basisdatentypen verwenden. Beispielsweise definieren einige Computer den int Typ, sodass die interne Darstellung 16 Bit beträgt, während andere Computer 32 Bits verwenden. Eine Computerarchitektur, die als "kleiner Endian" bezeichnet wird, weist die am wenigsten signifikante Byte von Daten der niedrigsten Speicheradresse und das wichtigste Byte der höchsten Adresse zu. Eine andere Architektur, die als "Big Endian" bezeichnet wird, weist dem am wenigsten signifikanten Byte die höchste Speicheradresse zu, die diesen Daten zugeordnet ist.
Remoteprozeduraufrufe erfordern strenge Kontrolle über Parametertypen. Um die Datenübertragung und -konvertierung über das Netzwerk zu verarbeiten, erzwingt MIDL streng Typbeschränkungen für daten, die über das Netzwerk übertragen werden. Aus diesem Grund enthält MIDL eine Reihe gut definierter Basistypen. MIDL erzwingt eine starke Eingabe, indem die Verwendung von Schlüsselwörtern vorgeschrieben wird, die die Größe und den Datentyp eindeutig definieren. Der sichtbarste Effekt der starken Typeingabe besteht darin, dass MIDL keine Variablen des Typs void *zulässt.
In den folgenden Themen werden in diesem Abschnitt die MIDL-Sprachfeatures erläutert, die starke Datentypen erzwingen:
- Basistypen
- signierte und nicht signierte Typen
- Wide-Character Typen
- Strukturen
- Gewerkschaften
- Aufzählungstypen
- Arrays
- Funktionsattribute
- Feldattribute
- drei Zeigertypen
- Typattribute