CLI und C gemischt / Exception Handling
-
Hallo,
ich habe 2 kleinere Frage und hoffe, ihr könnte mir helfen:
1. Wenn ich C++/CLI und C gemischt in einem Projekt programmiere, bleibt das resultierende Programm im CLI Standard und plattformunabhängig? Oder hab ich diesen Vorteil durch das nutzen vom normalen C verwirkt?
2. Ich hab so einige Funktionen, die mal eine Exception werfen können. Das ist mir eigentlich egal, ich möchte nur, dass kein Programmfehler gemeldet wird und den Fehler selbst einfach ignorieren. Wenn ich den Try/Catch Block benutze, muss ich ja auch die Exception ^e angeben. Mache ich dann mit dem e einfach nichts, kommt eine unschöne Warnung beim Kompilieren, von wegen "unreferenzierte Variable e".
Wie kann ich das eleganter lösen? Die Warnungen nerven und verlangsamen auch das Kompilieren. Einfach sowas wieif(e) break;
empfinde ich jetzt auch nicht als schön. Gehts noch anders?
Danke & Gruß
-
zu 1: Es bleibt nur in der IL ("Plattformunabhängig"), wenn Du /clr:safe verwendest; das ist aber mit der CRT nicht kompatibel und Du solltest gleich C# nehmen
zu 2: Du kannst es eleganter Lösen indem Du einfach den catch-Block leer lässt...
-
Danke Jochen, aber ...
zu 2: Hä? Wie meinst du das?
catch(){ } //catch-Handler muss einen Typ angeben //Der 'try'-Block ab Zeile '2551' besitzt keine catch-Handler catch(ArgumentException ^e){ } //warning C4101: 'e': Unreferenzierte lokale Variable
Die Warnung beim zweiten Catch Beispiel will ich ja gerade loswerden.
lg
-
try { } catch(...) { }
Fehler = 0
Warnungen = 0
-
backi schrieb:
Danke Jochen, aber ...
zu 2: Hä? Wie meinst du das?
catch(){ } //catch-Handler muss einen Typ angeben //Der 'try'-Block ab Zeile '2551' besitzt keine catch-Handler catch(ArgumentException ^e){ } //warning C4101: 'e': Unreferenzierte lokale Variable
Die Warnung beim zweiten Catch Beispiel will ich ja gerade loswerden.
lg
Geht gleich wie bei unbenutzten Funktions-Parametern, einfach den Namen weglassen:
catch(ArgumentException^){ } //keine warnung
-
hustbaer schrieb:
Geht gleich wie bei unbenutzten Funktions-Parametern, einfach den Namen weglassen:
catch(ArgumentException^){ } //keine warnung
Oh, gut, da hätte ich selbst drauf kommen können
Danke vielmals!