Frage

ein Funktionsprototyp gegeben und eine Typdefinition:

int my_function(unsigned short x);
typedef unsigned short blatherskite;

Ist die folgende Situation durch Standard definiert:

int main(int argc, char** argv) {
  int result;
  blatherskite b;

  b=3;
  result = my_function(b);
}

Do I Art Zwang vorhersagbar über die Funktion Prototyp bekommen?

War es hilfreich?

Lösung

Wenn Ihre Frage ist wirklich, ob die Art des Arguments und der Parameter übereinstimmen, dann ist die Antwort ja. typedef führt keine neue Art, schafft es nur Alias ??für einen vorhandenen. Variable b hat Typen unsigned int, genau wie die Parameter, obwohl b deklariert ist typedef-name blatherskite.

Ihr Beispiel ist nicht sehr gut für dass, obwohl zu demonstrieren. Alle ganzzahligen Typen sind wandelbar miteinander in C ++, so (Bereich Probleme zu ignorieren) würde der Code Verhalten definiert haben, auch wenn blatherskite einen anderen Typ bezeichnet (ein neuer Typ). Aber es funktioniert nicht. Das ist also auch perfekt gültig

void foo(unsigned int* p);
...
blatherskite *pb = 0;
foo(pb); // <- still valid

Andere Tipps

Zwang Kein Typ erforderlich ist. Der typedef ist nur ein Alias ??für den gleichen Typ, so dass Sie einen unsigned short auf eine Funktion, vorbei sind, die eine unsigned short nimmt.

Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow
scroll top