Qt 4.5.2 in MSVC 2008: compiler error C2182

Verschiedenes zu Qt
StefanG
Beiträge: 7
Registriert: 20. Juli 2009 09:39

Qt 4.5.2 in MSVC 2008: compiler error C2182

Beitrag von StefanG »

Was ich tat:
qt-win-opensource-4.5.2-mingw.exe herunter geladen;
MinGW-3.4.2.exe herunter geladen;
Qt installiert;
Qt konfiguriert mit "configure -no-sql-sqlite -no-qt3support -no-opengl -platform win32-msvc2008 -no-libtiff -no-dbus -no-phonon -no-phonon-backend -no-webkit";
aufgerufen: nmake;
qt-vs-addin-1.0.2.exe herunter geladen und installiert;
Alles lief einwandfrei und fehlerlos.
Dann startete ich MSVC 2008 und öffnete meine solution and kompilierte es im "Debug" mode.
Ich bekomme enttäuschende 30 Fehler, und alle lauten:

c:programmeqt4.5.2includeqtcore../../src/corelib/tools/qvector.h(112) : error C2182: 't': Unzulässige Verwendung des Typs 'void'

Bemerkung:
Parallel ist noch die ältere Version von Visual Studio (MSVC 2005) and Qt 4.2.1 are installed.
Die Variable QTDIR ist aber gesetzt auf: "C:ProgrammeQt4.5.2"

Nervös macht mich die Bemerkung in den mitgelieferten FAQ.txt: "download qt-win-eval-4.5.2-vs2008.exe", aber dieses File scheint bei Trolltech/Nokia unbekannt.

Wäre t(r)oll, wenn mir jemand wertvolle Tipps geben kann.
RavenIV
Beiträge: 267
Registriert: 21. Januar 2009 14:24
Wohnort: Waldshut

Re: Qt 4.5.2 in MSVC 2008: compiler error C2182

Beitrag von RavenIV »

StefanG hat geschrieben: c:programmeqt4.5.2includeqtcore../../src/corelib/tools/qvector.h(112) : error C2182: 't': Unzulässige Verwendung des Typs 'void'

Bemerkung:
Parallel ist noch die ältere Version von Visual Studio (MSVC 2005) and Qt 4.2.1 are installed.
Die Variable QTDIR ist aber gesetzt auf: "C:ProgrammeQt4.5.2"
Kann es sein, dass beim QTDIR der Fehler liegt?
Dort gehören doch sicher noch "/" oder "" dazu.

Und das include-Verzeichnis scheint auch nicht korrekt zu sein.
Linux, das längste Text-Adventure aller Zeiten
StefanG
Beiträge: 7
Registriert: 20. Juli 2009 09:39

Beitrag von StefanG »

War eine gute Idee und ich überprüfte beides.
Leider liegt darin nicht der Fehler, wäre auch zu einfach gewesen...war aber ein netter Versuch.
Irgendwie sind meine Backslashes verschluckt worden; jetzt also korrekt:

QTDIR = C:\Programme\Qt\4.5.2
Die include-Verzeichnisse sind in VS mit "QTDIR" angegeben.

Ich befürchte, mir fehlt ein Patch o.ä. in VS oder in Qt.
Denn der reportete Fehler verweist auf einen Typ, der zuvor mit
template <typename T>
deklariert wurde. Und das ist durchaus gültig.
solarix
Beiträge: 1133
Registriert: 7. Juni 2007 19:25

Beitrag von solarix »

qt-win-opensource-4.5.2-mingw.exe herunter geladen;
MinGW-3.4.2.exe herunter geladen;
Qt installiert;
Qt konfiguriert mit "configure -no-sql-sqlite -no-qt3support -no-opengl -platform win32-msvc2008 -no-libtiff -no-dbus -no-phonon -no-phonon-backend -no-webkit";
Aus reiner Neugier: warum hast du eine fertige Qt-Version (qt-win-opensource-4.5.2-mingw) runtergeladen und danach nochmals eine erstellt? Entweder nimmt man doch das fertige Paket (qt-win-opensource-4.5.2-mingw) oder man erstellt selbst eine aus mingw und dem Windows-Source (qt-win-opensource-src-4.5.2). Die beiden Varianten duerfen ausserdem nicht vermischt werden...
StefanG
Beiträge: 7
Registriert: 20. Juli 2009 09:39

Beitrag von StefanG »

Lediglich aus purem Unwissen.
Auf den neuen Download-Seiten geht nicht wirklich hervor, was alles wirklich gebraucht wird.
Und in den beigefügten readme- und FAQ-Texten steht nun wirklich nichts Neues.

Also, was nun ? Was lief nun falsch und was muss ich neu machen ?
Deinstallieren; was ?
solarix
Beiträge: 1133
Registriert: 7. Juni 2007 19:25

Beitrag von solarix »

Im Detail sollte dir das eher ein Windows-Experte erklaeren (evt. hilft auch die Forensuche) aber so in etwa:
- den ganzen mingw-Kram wegraeumen
- Qt-Sourcen fuer Windows downloaden
- mit MS-Compiler erstellen: http://doc.trolltech.com/4.5/install-win.html
- qt-vs-integration installieren.
StefanG
Beiträge: 7
Registriert: 20. Juli 2009 09:39

Beitrag von StefanG »

Jau, ich befreite mich also von MinGW; ich lud nun "qt-sdk-win-opensource-2009.03.1.exe" von der Qt-Downloadseite und entpackte es.
Stundenlang installierte und kompilierte Qt.
Die "Qt Visual Studio Integration" war schon Anfang Juli installiert (autoexp.dat hat etliche QT Ergänzungen)

Dann endlich startete ich Visual Studio 2008 erneut, lud meine solution, kontrollierte und änderte via Qt-Qt Optionen die Qt-Version und kompilierte erneut mein Projekt:
Und wieder tauchen die bekannten 30 Fehler
...
c:\programme\qt\2009.03\qt\include\qtcore\../../src/corelib/tools/qvector.h(112) : error C2182: 't': Unzulässige Verwendung des Typs 'void'
.\PCHClr.cpp(2): Siehe Verweis auf die Instanziierung der gerade kompilierten Klassen-template "QVector<T>".
...

Es muss also etwas Grundsätzliches sein, was fehlt.
qvector.h ist zwar in Qt4.5 verändert, aber der Klassen-template ist unverändert.
Christian81
Beiträge: 7319
Registriert: 26. August 2004 14:11
Wohnort: Bremen
Kontaktdaten:

Beitrag von Christian81 »

Wir bräuchten schon ein wenig mehr Informationen - vor allem wo genau der Fehler auftritt und alle Fehlermeldungen bis zu der von Dir geposteten. Besonders die Stelle die den Fehler provoziert ist wichtig!
MfG Christian

'Funktioniert nicht' ist keine Fehlerbeschreibung
solarix
Beiträge: 1133
Registriert: 7. Juni 2007 19:25

Beitrag von solarix »

.\PCHClr.cpp(2):
Moment ich dachte bisher, du würdest was compilen was schonmal lief (ein Beispiel von Qt oder ein altes Projekt...). Ich bin davon ausgegangen, dass du sonst ja DEIN Code zeigen würdest... Falls also dein Code noch nie übersetzt wurde, her damit..!
StefanG
Beiträge: 7
Registriert: 20. Juli 2009 09:39

Beitrag von StefanG »

Ok. Here we go.
Im Anhang ist mein Log-Auszug vom Compilerlauf.

Mein Projekt lief bereits unter Visual Studio 2005 + Qt 4.2.1 (seit April 2008 !).
Nun stelle ich um auf MSVC2008 + Qt 4.5.2; hier konnte ich mein Projekt noch nicht fehlerfrei kompilieren.

Nochmal der Hinweis: ich habe noch parallel Visual Studio 2005 installiert und die alte Version Qt 4.2.1; zur Not will ich schnell zurückschwenken, ohne alles neu zu installieren. Ich hoffe nicht, dass es stört...
Die Variablen PATH und QTDIR stehen wie folgt:
PATH="... C:\Programme\Qt\2009.03\qt\bin"
QTDIR="C:\Programme\Qt\2009.03\qt"
StefanG
Beiträge: 7
Registriert: 20. Juli 2009 09:39

Beitrag von StefanG »

Anhang wurde mir verboten...
Darum kopiere ich eben alles rein:

1>------ Neues Erstellen gestartet: Projekt: WayChargeTool, Konfiguration: Debug Win32 ------
1>Die Zwischen- und Ausgabedateien für das Projekt "xxx" mit der Konfiguration "Debug|Win32" werden gelöscht.
1>Compiling Qt resource file: .\xxx.qrc...
1>Uic'ing
...
1>Moc'ing
...
1>Kompilieren...
1>PCHClr.cpp
1>c:\programme\qt\2009.03\qt\include\qtcore\../../src/corelib/tools/qchar.h(301) : warning C4561: '__fastcall' ist mit der Option '/clr' inkompatibel: Konvertierung nach '__stdcall' erfolgt
1>c:\programme\qt\2009.03\qt\include\qtcore\../../src/corelib/tools/qchar.h(302) : warning C4561: '__fastcall' ist mit der Option '/clr' inkompatibel: Konvertierung nach '__stdcall' erfolgt
1>c:\programme\qt\2009.03\qt\include\qtcore\../../src/corelib/tools/qchar.h(303) : warning C4561: '__fastcall' ist mit der Option '/clr' inkompatibel: Konvertierung nach '__stdcall' erfolgt
1>c:\programme\qt\2009.03\qt\include\qtcore\../../src/corelib/tools/qchar.h(304) : warning C4561: '__fastcall' ist mit der Option '/clr' inkompatibel: Konvertierung nach '__stdcall' erfolgt
1>c:\programme\qt\2009.03\qt\include\qtcore\../../src/corelib/tools/qchar.h(305) : warning C4561: '__fastcall' ist mit der Option '/clr' inkompatibel: Konvertierung nach '__stdcall' erfolgt
1>c:\programme\qt\2009.03\qt\include\qtcore\../../src/corelib/tools/qchar.h(306) : warning C4561: '__fastcall' ist mit der Option '/clr' inkompatibel: Konvertierung nach '__stdcall' erfolgt
1>c:\programme\qt\2009.03\qt\include\qtcore\../../src/corelib/tools/qchar.h(307) : warning C4561: '__fastcall' ist mit der Option '/clr' inkompatibel: Konvertierung nach '__stdcall' erfolgt
1>c:\programme\qt\2009.03\qt\include\qtcore\../../src/corelib/tools/qchar.h(308) : warning C4561: '__fastcall' ist mit der Option '/clr' inkompatibel: Konvertierung nach '__stdcall' erfolgt
1>c:\programme\qt\2009.03\qt\include\qtcore\../../src/corelib/tools/qchar.h(310) : warning C4561: '__fastcall' ist mit der Option '/clr' inkompatibel: Konvertierung nach '__stdcall' erfolgt
1>c:\programme\qt\2009.03\qt\include\qtcore\../../src/corelib/tools/qchar.h(311) : warning C4561: '__fastcall' ist mit der Option '/clr' inkompatibel: Konvertierung nach '__stdcall' erfolgt
1>c:\programme\qt\2009.03\qt\include\qtcore\../../src/corelib/tools/qchar.h(312) : warning C4561: '__fastcall' ist mit der Option '/clr' inkompatibel: Konvertierung nach '__stdcall' erfolgt
1>c:\programme\qt\2009.03\qt\include\qtcore\../../src/corelib/tools/qchar.h(314) : warning C4561: '__fastcall' ist mit der Option '/clr' inkompatibel: Konvertierung nach '__stdcall' erfolgt
1>c:\programme\qt\2009.03\qt\include\qtcore\../../src/corelib/tools/qchar.h(315) : warning C4561: '__fastcall' ist mit der Option '/clr' inkompatibel: Konvertierung nach '__stdcall' erfolgt
1>c:\programme\qt\2009.03\qt\include\qtcore\../../src/corelib/tools/qchar.h(316) : warning C4561: '__fastcall' ist mit der Option '/clr' inkompatibel: Konvertierung nach '__stdcall' erfolgt
1>c:\programme\qt\2009.03\qt\include\qtcore\../../src/corelib/tools/qchar.h(317) : warning C4561: '__fastcall' ist mit der Option '/clr' inkompatibel: Konvertierung nach '__stdcall' erfolgt
1>c:\programme\qt\2009.03\qt\include\qtcore\../../src/corelib/tools/qchar.h(318) : warning C4561: '__fastcall' ist mit der Option '/clr' inkompatibel: Konvertierung nach '__stdcall' erfolgt
1>c:\programme\qt\2009.03\qt\include\qtcore\../../src/corelib/tools/qchar.h(319) : warning C4561: '__fastcall' ist mit der Option '/clr' inkompatibel: Konvertierung nach '__stdcall' erfolgt
1>c:\programme\qt\2009.03\qt\include\qtcore\../../src/corelib/tools/qchar.h(320) : warning C4561: '__fastcall' ist mit der Option '/clr' inkompatibel: Konvertierung nach '__stdcall' erfolgt
1>c:\programme\qt\2009.03\qt\include\qtcore\../../src/corelib/tools/qchar.h(321) : warning C4561: '__fastcall' ist mit der Option '/clr' inkompatibel: Konvertierung nach '__stdcall' erfolgt
1>c:\programme\qt\2009.03\qt\include\qtcore\../../src/corelib/tools/qchar.h(322) : warning C4561: '__fastcall' ist mit der Option '/clr' inkompatibel: Konvertierung nach '__stdcall' erfolgt
1>c:\programme\qt\2009.03\qt\include\qtcore\../../src/corelib/tools/qchar.h(323) : warning C4561: '__fastcall' ist mit der Option '/clr' inkompatibel: Konvertierung nach '__stdcall' erfolgt
1>c:\programme\qt\2009.03\qt\include\qtcore\../../src/corelib/tools/qchar.h(325) : warning C4561: '__fastcall' ist mit der Option '/clr' inkompatibel: Konvertierung nach '__stdcall' erfolgt
1>c:\programme\qt\2009.03\qt\include\qtcore\../../src/corelib/tools/qchar.h(326) : warning C4561: '__fastcall' ist mit der Option '/clr' inkompatibel: Konvertierung nach '__stdcall' erfolgt
1>c:\programme\qt\2009.03\qt\include\qtcore\../../src/corelib/tools/qchar.h(328) : warning C4561: '__fastcall' ist mit der Option '/clr' inkompatibel: Konvertierung nach '__stdcall' erfolgt
1>c:\programme\qt\2009.03\qt\include\qtcore\../../src/corelib/tools/qvector.h(112) : error C2182: 't': Unzulässige Verwendung des Typs 'void'
1> .\PCHClr.cpp(2): Siehe Verweis auf die Instanziierung der gerade kompilierten Klassen-template "QVector<T>".
1> with
1> [
1> T=void
1> ]
1> c:\programme\qt\2009.03\qt\include\qtcore\../../src/corelib/tools/qhash.h(565): Siehe Verweis auf die Instanziierung der gerade kompilierten Klassen-template "QHashDummyNode<Key,T>".
1> with
1> [
1> Key=QAccessible::Method,
1> T=QHashDummyValue
1> ]
1> c:\programme\qt\2009.03\qt\include\qtcore\../../src/corelib/tools/qhash.h(563): Bei der Kompilierung der Klassen-template der void QHash<Key,T>::detach_helper(void)-Memberfunktion
1> with
1> [
1> Key=QAccessible::Method,
1> T=QHashDummyValue
1> ]
1> c:\programme\qt\2009.03\qt\include\qtcore\../../src/corelib/tools/qhash.h(540): Bei der Kompilierung der Klassen-template der void QHash<Key,T>::freeData(QHashData *)-Memberfunktion
1> with
1> [
1> Key=QAccessible::Method,
1> T=QHashDummyValue
1> ]
1> c:\programme\qt\2009.03\qt\include\qtcore\../../src/corelib/tools/qset.h(231): Siehe Verweis auf die Instanziierung der gerade kompilierten Klassen-template "QHash<Key,T>".
1> with
1> [
1> Key=QAccessible::Method,
1> T=QHashDummyValue
1> ]
1> c:\programme\qt\2009.03\qt\include\qtgui\../../src/gui/accessible/qaccessible.h(358): Siehe Verweis auf die Instanziierung der gerade kompilierten Klassen-template "QSet<T>".
1> with
1> [
1> T=QAccessible::Method
1> ]
1>c:\programme\qt\2009.03\qt\include\qtcore\../../src/corelib/tools/qvector.h(138) : error C2182: 'at': Unzulässige Verwendung des Typs 'void'
1>c:\programme\qt\2009.03\qt\include\qtcore\../../src/corelib/tools/qvector.h(139) : error C2182: '[]': Unzulässige Verwendung des Typs 'void'
1>c:\programme\qt\2009.03\qt\include\qtcore\../../src/corelib/tools/qvector.h(140) : error C2182: '[]': Unzulässige Verwendung des Typs 'void'
1>c:\programme\qt\2009.03\qt\include\qtcore\../../src/corelib/tools/qvector.h(141) : error C2182: 't': Unzulässige Verwendung des Typs 'void'
1>c:\programme\qt\2009.03\qt\include\qtcore\../../src/corelib/tools/qvector.h(142) : error C2182: 't': Unzulässige Verwendung des Typs 'void'
1>c:\programme\qt\2009.03\qt\include\qtcore\../../src/corelib/tools/qvector.h(143) : error C2182: 't': Unzulässige Verwendung des Typs 'void'
1>c:\programme\qt\2009.03\qt\include\qtcore\../../src/corelib/tools/qvector.h(144) : error C2182: 't': Unzulässige Verwendung des Typs 'void'
1>c:\programme\qt\2009.03\qt\include\qtcore\../../src/corelib/tools/qvector.h(145) : error C2182: 't': Unzulässige Verwendung des Typs 'void'
1>c:\programme\qt\2009.03\qt\include\qtcore\../../src/corelib/tools/qvector.h(149) : error C2182: 't': Unzulässige Verwendung des Typs 'void'
1>c:\programme\qt\2009.03\qt\include\qtcore\../../src/corelib/tools/qvector.h(151) : error C2182: 't': Unzulässige Verwendung des Typs 'void'
1>c:\programme\qt\2009.03\qt\include\qtcore\../../src/corelib/tools/qvector.h(152) : error C2182: 't': Unzulässige Verwendung des Typs 'void'
1>c:\programme\qt\2009.03\qt\include\qtcore\../../src/corelib/tools/qvector.h(153) : error C2182: 't': Unzulässige Verwendung des Typs 'void'
1>c:\programme\qt\2009.03\qt\include\qtcore\../../src/corelib/tools/qvector.h(154) : error C2182: 't': Unzulässige Verwendung des Typs 'void'
1>c:\programme\qt\2009.03\qt\include\qtcore\../../src/corelib/tools/qvector.h(234) : error C2182: 'x': Unzulässige Verwendung des Typs 'void'
1>c:\programme\qt\2009.03\qt\include\qtcore\../../src/corelib/tools/qvector.h(235) : error C2182: 'x': Unzulässige Verwendung des Typs 'void'
1>c:\programme\qt\2009.03\qt\include\qtcore\../../src/corelib/tools/qvector.h(241) : error C2182: 'first': Unzulässige Verwendung des Typs 'void'
1>c:\programme\qt\2009.03\qt\include\qtcore\../../src/corelib/tools/qvector.h(242) : error C2182: 'first': Unzulässige Verwendung des Typs 'void'
1>c:\programme\qt\2009.03\qt\include\qtcore\../../src/corelib/tools/qvector.h(243) : error C2182: 'last': Unzulässige Verwendung des Typs 'void'
1>c:\programme\qt\2009.03\qt\include\qtcore\../../src/corelib/tools/qvector.h(244) : error C2182: 'last': Unzulässige Verwendung des Typs 'void'
1>c:\programme\qt\2009.03\qt\include\qtcore\../../src/corelib/tools/qvector.h(245) : error C2182: 't': Unzulässige Verwendung des Typs 'void'
1>c:\programme\qt\2009.03\qt\include\qtcore\../../src/corelib/tools/qvector.h(246) : error C2182: 't': Unzulässige Verwendung des Typs 'void'
1>c:\programme\qt\2009.03\qt\include\qtcore\../../src/corelib/tools/qvector.h(250) : error C2182: 'defaultValue': Unzulässige Verwendung des Typs 'void'
1>c:\programme\qt\2009.03\qt\include\qtcore\../../src/corelib/tools/qvector.h(256) : error C2182: 'reference': Unzulässige Verwendung des Typs 'void'
1>c:\programme\qt\2009.03\qt\include\qtcore\../../src/corelib/tools/qvector.h(257) : error C2182: 'const_reference': Unzulässige Verwendung des Typs 'void'
1>c:\programme\qt\2009.03\qt\include\qtcore\../../src/corelib/tools/qvector.h(266) : error C2182: 't': Unzulässige Verwendung des Typs 'void'
1>c:\programme\qt\2009.03\qt\include\qtcore\../../src/corelib/tools/qvector.h(267) : error C2182: 't': Unzulässige Verwendung des Typs 'void'
1>c:\programme\qt\2009.03\qt\include\qtcore\../../src/corelib/tools/qvector.h(272) : error C2182: 'front': Unzulässige Verwendung des Typs 'void'
1>c:\programme\qt\2009.03\qt\include\qtcore\../../src/corelib/tools/qvector.h(281) : error C2182: 't': Unzulässige Verwendung des Typs 'void'
1>c:\programme\qt\2009.03\qt\include\qtcore\../../src/corelib/tools/qvector.h(283) : error C2182: 't': Unzulässige Verwendung des Typs 'void'
1>Das Buildprotokoll wurde unter "xxx" gespeichert.
1>WayChargeTool - 30 Fehler, 24 Warnung(en)
========== Alles neu erstellen: 0 erfolgreich, Fehler bei 1, 0 übersprungen ==========
Christian81
Beiträge: 7319
Registriert: 26. August 2004 14:11
Wohnort: Bremen
Kontaktdaten:

Beitrag von Christian81 »

Es muss doch möglich sein den spezifischen Header welcher das Problem erzeugt herauszufinden. Das es nicht in Qt ist sieht man ja daran, dass Du Qt allei übersetzen konntest...
MfG Christian

'Funktioniert nicht' ist keine Fehlerbeschreibung
DarkWotan
Beiträge: 65
Registriert: 18. Mai 2006 10:03

Beitrag von DarkWotan »

Vom Übersetzen von Qt mit VS2005 SP1 ist bekannt, dass dort Template-Code nicht richtig übersetzt werden kann, ein Patch behebt dieses Problem. Ich weiß jedoch nicht, ob dieser Fehler bei VS2008 wieder drin ist!

http://mm-werkstatt.informatik.uni-augs ... qt2005.pdf
peter999
Beiträge: 24
Registriert: 12. Januar 2006 11:28

Beitrag von peter999 »

Setze mal
SET QMAKESPEC=win32-msvc2008
Du hast wahrscheinlich eine falsche Voreinstellung für den Compiler, denn __fastcall ist, wenn ich mich nicht irre, für VS2008 Win32 obsolet !

Das ist ein Auszug aus der /src/corelib/globals/globals.h:

#if defined(__i386__) || defined(_WIN32) || defined(_WIN32_WCE)
# if defined(Q_CC_GNU)
#if !defined(Q_CC_INTEL) && ((100*(__GNUC__ - 0) + 10*(__GNUC_MINOR__ - 0) + __GNUC_PATCHLEVEL__) >= 332)
# define QT_FASTCALL __attribute__((regparm(3)))
#else
# define QT_FASTCALL
#endif
# elif defined(Q_CC_MSVC) && (_MSC_VER > 1300 || defined(Q_CC_INTEL))
# define QT_FASTCALL __fastcall
# else
# define QT_FASTCALL
# endif
#else
# define QT_FASTCALL
#endif
StefanG
Beiträge: 7
Registriert: 20. Juli 2009 09:39

Beitrag von StefanG »

An peter999:
Vielen Dank, peter999.
QMAKESPEC war nicht gesetzt !
Ich richtete es ein, startete MSVC neu und compilierte und bekam alle Warnings und Errors wieder...es hat also leider nichts gebracht.

Dagegen versuchte ich folgendes: in qglobal.h kommentierte ich den Zusatz "__fastcall" einfach mal aus. Damit erreichte ich, dass zumindest die vielen Warnings wegfallen !

An DarkWotan:
Das klingt sehr vielversprechend, zumal alle meine Fehler mit dem template zu tun haben. Leider existiert kein Patch für MSVC2008+SP1 von irgendwem. Und den von MSVC2005 zu nehmen, ist mir zu heikel, denn wer weiss denn schon, was damit "verschlimmbessert" wird ?

An Christian81:
Also, qvector.h wirft den Fehler...
Ich befürchte nach wie vor, dass entweder Qt mit MSVC2008 noch nicht in Gänze getestet wurde oder ich eine Kleinigkeit zu installieren oder zu setzen vergaß.
Antworten