gcc mit verbesserten Fehlermeldungen bei typedefs

Hinweise auf besondere Websites, Vorstellung eigener Websites, Internet-Smalltalk
Antworten
Benutzeravatar
Kerli
Beiträge: 1456
Registriert: So Jul 06, 2008 10:17 am
Wohnort: Österreich
Kontaktdaten:

gcc mit verbesserten Fehlermeldungen bei typedefs

Beitrag von Kerli » Mo Dez 12, 2011 12:24 am

Heute habe ich ein Funktion mit Parametern vom falschen Typ aufgerufen und dabei eine praktische Verbesserung in g++-4.6 entdeckt. Code ist dabei zb folgender:

Code: Alles auswählen

struct Blub{};
typedef Blub blab;
void blub(blab* x)
{

}

struct Test{};
typedef Test MyType;

int main(int argc, char* argv[])
{
  blub(MyType{});
  return 0;
}
g++-4.5 hat geschrieben:test.cpp:13:16: Fehler: »MyType« kann nicht nach »blab*« für Argument »1« nach »void blub(blab*)« umgewandelt werden
g++-4.6 hat geschrieben:test.cpp:13:16: Fehler: »MyType {aka Test}« kann nicht nach »blab* {aka Blub*}« für Argument »1« nach »void blub(blab*)« umgewandelt werden
Praktisch, oder? :) Vor allem bei Templates dürfte das auch sehr hilfreich sein können.
"Make it idiot-proof and someone will invent an even better idiot." (programmers wisdom)

OpenGL Tutorials und vieles mehr rund ums Programmieren: http://www.tomprogs.at

Benutzeravatar
fat-lobyte
Beiträge: 1398
Registriert: Sa Jul 05, 2008 12:23 pm
Wohnort: ::1
Kontaktdaten:

Re: gcc mit verbesserten Fehlermeldungen bei typedefs

Beitrag von fat-lobyte » Mo Dez 12, 2011 1:34 am

Stimmt, das ist cool.

Bei clang gibts das ganze in Farbe (und Bunt!) und noch mit hübchen pfeilen:

Code: Alles auswählen

test.cpp:13:3: error: no matching function for call to 'blub'
  blub(MyType());
  ^~~~
test.cpp:3:6: note: candidate function not viable: no known conversion from
      'MyType' (aka 'Test') to 'blab *' (aka 'Blub *') for 1st argument;
void blub(blab* x)
ps.: Leider geht die neue Initialisierungsliste in clang noch nicht. :-( Sollte sich aber bald ändern.
Haters gonna hate, potatoes gonna potate.

Antworten