Request eror beim Compelieren ?
-
Folgeendes Problem habe ich.
benutzte Compiller:
AtmelsStudio 6.1
GCC 4.7.1beim erstellen einer einfachen ClassTemplate , erscheint die fehler meldeung Request main.
hier ein einfaches Beispiel .
template<class T> class Test { void Fnc() { uint8_t v = 0; } };[code="cpp"] main() { Test<int> dd; dd.Fnc(); }solange wie die zuweisung uint8_t v = 0 oder in ähnlicher form exestiert, wird diese fehlermeldung ausgegeben.
nehme ich diese raus wird alles normal erstellt.nun bin ich etwas ratlos, da dieses unter visualstudio 2010 nich vorkommt.
gibt es in sachen templates unter gcc einschränkungen ?
mfg Nuckey
-
uint8_t den Datentyp gibt es erst seit C++11. Was ist, wenn du mit -std=c++11 kompilierst?
-
das selbe.
scheint ne sache von gcc zu sein, denn unter visual studio macht er es ohne zu mekern.
wie schon beschrieben nehme ich die zuweisung raus , is alles in ordnung.
(dises beispiel soll nur das Problem darstellen ).
mfg Nuckey
-
Das ist weder der vollständige Code, der den Fehler reproduziert, noch ist die Fehlermeldung vollständig. Du möchtest wohl eigentlich gar keine Hilfe.
-
Keine Ahnung. Poste mal komplette Fehlermeldung.
-
@mani66 : das ist der vollständige code so wie ich ihn teste und der fehler produziert wird.
deine pauschale aussage sollteste für dich behalten, die ist fehl am platze.hier die fehlermeldungen
Avr GCC
||=== avrtest20, Debug ===|
main.cpp|18| required from here|
test.h|16|warning: unused variable 'v' [-Wunused-variable]|
||=== Build finished: 1 errors, 1 warnings (0 minutes, 1 seconds) ===|GCC -> hier gibt er es nur als warnung aus
H:\test33\main.cpp||In instantiation of 'void Test<T>::Fnc()|
H:\test33\main.cpp|26|required from here|
H:\test33\main.cpp|13|warning: unused variable 'v' [-Wunused-variable]|
||=== Build finished: 0 errors, 3 warnings (0 minutes, 1 seconds) ===|mfg Nuckey
-
Nuckey schrieb:
||=== avrtest20, Debug ===|
main.cpp|18| required from here|
test.h|16|warning: unused variable 'v' [-Wunused-variable]|
||=== Build finished: 1 errors, 1 warnings (0 minutes, 1 seconds) ===|Die error Meldung hast du aber nicht gepostet? Vielleicht ist es einfach auch treat warnings as errors?
-
nein da die aussage request ... in beiden fällen die gleiche ist (grob gesehn)
da diese meldung in GCC als warnung ausgegeben wird und in AVR GCC als error
gehe ich jetz ersmal davon aus das dies etwas mit irgenwelchen Optionen zutun hat
Warn Level oder sowas.aber da mache ich erst im Neujahr weiter

guten rutsch ins neue Jahr , Nuckey
-
Nuckey schrieb:
@mani66 : das ist der vollständige code so wie ich ihn teste und der fehler produziert wird.
deine pauschale aussage sollteste für dich behalten, die ist fehl am platze.Offensichtlich ist meine Aussage völlig richtig, denn der von dir gelieferte Code kann nicht zu dem Fehler führen. Dafür müsste entweder die Templatedefinition im cpp oder aber im cpp ein include enthalten sein. Wenn du also nicht in der Lage bist, vernünftige Fragen zu Stellen, behalte sie doch einfach für dich.
-
@mani66 : jo hast recht und darfst dich jetz gross fühlen.
und ich bitte dich in zukunf mich nicht weiter zu belästigen
Nuckey
-
Könntest du jetzt vielleicht die komplette Fehlermeldung posten?
-
das ist die komplette Fehlermeldung.
Habe mein gedanken zu den Optionen getestet.
diese Fehler/Warnmeldung kommt nur dann wenn unter Atmel Studio,AVRGCC -Wall gesetzt ist.
meine IDE umgebung war AtmelStudio und CodeBlock
bei CodeBlock bin ich mir nicht ganz Sicher ob Die Optionen wirken.
aber gut, das es Optionproblem ist und somit meine Frage in wie weit GCC mit Templates einschränkungen gibt, aus der Ursache dieser Fehler/Warnmeldung.
glaube ich sagen zu können Closed.
nochmals Guten Rutsch ins neue jahr.
mfg Nuckey
-
Der Fehler hatte nichts mit Templates zu tun, sondern ist einfach nur die Warnung, dass du eine Variable v erstellst, diese aber nicht verwendest.
-
diese meldung meine ich nicht sondern -> main.cpp|18| required from here|
und diese wird unter GCC die option -Wall (nach jetzigen kenntniss stand)
verursacht. genaures weiss ich wenn ich die docu der optionen durch habemfg Nuckey
-
Nuckey schrieb:
diese meldung meine ich nicht sondern -> main.cpp|18| required from here|
Ach das.
Das ist nur ein Hinweis vom Compiler, wo genau diese Instanziierung des Templates verlangt wurde. Das gehört zur Fehlerursprungbeschreibung. Ist ganz hilfreich wenn man weiß, wo das Template wie instanziiert wurde.H:\test33\main.cpp||In instantiation of 'void Test<T>::Fnc()| // Die Function Fnc des Templates Test wird instanziiert, dabei tritt ein Fehler auf H:\test33\main.cpp|26|required from here| // Diese Instanziierung wird dort verlangt H:\test33\main.cpp|13|warning: unused variable 'v' [-Wunused-variable]| // Der eigentliche Fehler ||=== Build finished: 0 errors, 3 warnings (0 minutes, 1 seconds) ===|
-
da schaue bite ganz am anfang : da habe ich die main .
die fehlermeldung zeigt dann den aufruf dd.Fnc() an.
aber gut, zumindenst weiss ich jetz das es an -Wall liegt , werde ich mal spasseshalber die warnoptionen durchgehn um zu sehn bei welcher er rumzickt.
Edit: Nathan hattest Recht das die unbebutzte Variable rumzickt.
das war ebend das verwirrende unter GCC nur ne warnung , unter Visual Studio ohne mucken, nur ebend AVR GCC wurde eine Warnung Wegen unbenutzten Variable rausgegeben , aber gleichzeitig ein Error der jedesmal auf die dd.Fnc() verwiess,in der main Function und nicht auf die zuweisung innerhalb der Fnc().
Danke euch erstmal !
gruss nuckey