.
|
|
| Autor | Beitrag |
|---|---|
|
000 17.08.2001, 21:34 Prefect |
Compilerfehler... Mehr muß ich dazu hoffentlich nicht sagen, oder? Ach ja, gcc hat damit keine Probleme... cu, Widelands - Gemütliche Aufbaustrategie, Free Software |
|
Profil || Suche |
|
001 17.08.2001, 21:52 Zeeke |
Borland C++ auch nicht... |
|
Profil || Suche |
|
002 17.08.2001, 22:07 Another1 |
w0rd --Another1 ...relaxing..atm =) |
|
Profil || Suche |
|
003 18.08.2001, 11:35 Prefect |
MingW32 ist ja im Endeffekt auch gcc :) cu, Widelands - Gemütliche Aufbaustrategie, Free Software |
|
Profil || Suche |
|
004 18.08.2001, 11:41 Zeeke |
Ja, aber dort geht es nicht..., also ich habe es mit DevC++ getestet, aber das basiert ja eigentlich auf MingW32.... edit: Das ist der Fehler.... --Dieser Beitrag wurde am 18.08.2001 um 11:42 von ZeekeGF bearbeitet. |
|
Profil || Suche |
|
005 18.08.2001, 15:30 Prefect |
Umm.. Der Fehler liegt bei dir, wie du eigentlich dir selber denken können müßtest. Die Funktion nimmt ja ein (unsigned char *) als Parameter. Wahrscheinlich hast du einfach nen String übergeben, und Strings sind per default (signed char *). Außerdem sollte dir auffallen, dass der Fehler nicht innerhalb der Funktion, sondern im Framework auftritt *kopfschüttel* Außerdem sollte das nur ne Warnung sein und kein Fehler (es sei denn du hast warnings as errors eingestellt). cu, Widelands - Gemütliche Aufbaustrategie, Free Software Dieser Beitrag wurde am 18.08.2001 um 15:31 von Prefect bearbeitet. |
|
Profil || Suche |
|
006 18.08.2001, 16:24 Zeeke |
Hm, bei Borland geht aber genau der selbe Code ohne Warunung oder Fehler :) Aber hast ja recht :) --Dieser Beitrag wurde am 18.08.2001 um 16:32 von ZeekeGF bearbeitet. |
|
Profil || Suche |
|
007 18.08.2001, 17:22 Prefect |
Dann stell mal das Warninglevel ein bißchen höher.... ne ganze Menge potentieller Bugs kann man frühzeitig finden, wenn man auf dem höchsten Warnungslevel arbeitet. Bei meinen eigenen Sachen arbeite ich immer auf Level 4 unter MSVC++ und mit -Wall mit gcc. Ach ja, MSVC++ kommt auf Level 4 immer mit zwei besonders nervigen und unnötigen Warnungstypen, die kann man ganz einfach abschalten: #pragma warning(disable : 4514) // unreferenced inline function removed cu, Widelands - Gemütliche Aufbaustrategie, Free Software |
|
Profil || Suche |
|
008 20.08.2001, 09:29 Hessie J. |
Wer so 'nen Code tatsächlich benutzt gehört aber auch erschossen :-) -- |
|
Profil || Suche |
|
009 20.08.2001, 14:09 Another1 |
uhuh, das darfst du doch nich zu prefect sagen *ZuHessieSchauUndAnDenKopfHau* =P --Another1 ...relaxing..atm =) |
|
Profil || Suche |
|
010 20.08.2001, 15:26 Hessie J. |
*aua* ah schmarrn, das sind akademische Rätselspielchen! In einer Funktion ein #define, wo gibt's denn sowas? Auf so eine Idee muss man erstmal kommen ;) -- |
|
Profil || Suche |
|
011 20.08.2001, 16:37 TheVoice |
Ja ich weiß net, ich hab mich auch schon gewundert... finde das irgendwie Ich meine hallo ? Und dann noch ne Konstante inkrementieren, hä ? Das kann doch nur zu einem Compilingfehler führen.... ich mein okay..... das war wahrscheinlich vorhergesehen, aber naja -- Against TCPA | Resourcecode.de | Blender 3D | [ Darkzone | Pandorra | Alpine ] |
|
Profil || Suche |
|
012 20.08.2001, 17:38 [PE]Spinator |
Alles was hinter #define steht, wird ja beim kompilierprozess durch die entsprechende definition ersetzt... Von dem her sollte das eigentlich schon gehen, aber ein Sicherheitsmechanismus von M$ verhindert das... und ehm... Wieso zum Geier gibt das ne schutzverletzung?: void main( ) array[100].wert = 0; Versteh ich da was falsch, wenn ich denke, das ich auf die letzte variable im array zugreifen kann?? --This post was written using Opera 7.0 (http://www.opera.com) Dieser Beitrag wurde am 20.08.2001 um 17:39 von [PE]Spinator bearbeitet. |
|
Profil || Suche |
|
013 20.08.2001, 17:42 Gollum |
wenn du eine array mit [100] deklarierst hat sie zwar 100 felder, [url="http://www.thelordoftherings.com/cgi-bin/get-image.pl?ID=alan-lee-058 "]-N/A-[/url]
|
|
Profil || Suche |
|
014 20.08.2001, 17:53 [PE]Spinator |
Wenn ich ein array[100] will, dann geh ich doch davon aus, das er mir ein Array mit array[0]-array[100] erstellt.... Mach mal: char text[100]; das geht ja auch... Gibts da bei den structs ne andere Regelung? --This post was written using Opera 7.0 (http://www.opera.com) |
|
Profil || Suche |
|
015 20.08.2001, 18:10 TheVoice |
Nein, das ist definitiv nicht so... Du definierst ein 100 elementiges Array mit int Array[100]; Against TCPA | Resourcecode.de | Blender 3D | [ Darkzone | Pandorra | Alpine ] |
|
Profil || Suche |
|
016 20.08.2001, 18:20 [PE]Spinator |
Hmm? char text[100]; funktioniert... ein text[100] ist also ein 101 elementiges array. --This post was written using Opera 7.0 (http://www.opera.com) |
|
Profil || Suche |
|
017 20.08.2001, 18:42 Gollum |
wenn du das array deklarierst wird ein adressbereich in der benötigten größe dafür reserviert, wenn du die grenze dann überschreitest wird einfach die nächste speicheradresse verwendet, aber wenn da schon was steht gibts einen natürlich eine schutzverletzung weil du dort nicht drüberschreiben darfst.... dh es kann gehen, aber muss es nicht... - also mach das nicht so :) --[url="http://www.thelordoftherings.com/cgi-bin/get-image.pl?ID=alan-lee-058 "]-N/A-[/url]
|
|
Profil || Suche |
|
018 20.08.2001, 19:20 Prefect |
Naja, es wird zunächst einmal gehen, aber es werden Teile des Stacks überschrieben. Und früher oder später gibt es dann Krach. TTT kann von Stackkorruption ein Liedchen singen, gell? ;) So, und für all diese Leute, die mich umbringen wollen oder so ;) Das, was ich da mache, macht durchaus gewissen Sinn. Ich hab Callbackfunktionen, die natürlich immer die gleichen Parameter haben müssen - sonst müßte ich die Funktion selbst casten. Im speziellen Fall geht es um eine Grafikroutine, die RLE-Sprites mit zwei verschiedenen Paletten auf eine TrueColor-Surface bringt. Und diese Surfaces können sowohl 16Bit als auch 32Bit haben. Da ich lieber einen Funktionspointer habe als 1000 switches verwende ich einmal nen Funktionspointer. Und damit ich ohne große Umstände den char * bzw. void *-Argumentpointer auf die richtige Größe casten kann verwende ich das Makro. Wenn jemand ne wirklich gute Alternative hätte wäre ich froh drum :) cu, Widelands - Gemütliche Aufbaustrategie, Free Software |
|
Profil || Suche |
|
019 20.08.2001, 19:36 Gollum |
Err.. [url="http://www.thelordoftherings.com/cgi-bin/get-image.pl?ID=alan-lee-058 "]-N/A-[/url]
|
|
Profil || Suche |
|
020 20.08.2001, 19:56 [PE]Spinator |
IcH kANn aucH n verdAmmtes Liedchen, wEnn niCht gLeich ne ganZe sYMphonie von StackkOrRuption SIngeN!!!! AARGH! Aber danke für die Antworten... Ich hab mich bis jetzt auf die annahme gestützt, das ein "int wert[100]" ein 101 elementiges array ist, würde mir auch logischer erscheinen... Aber was will man machen. --This post was written using Opera 7.0 (http://www.opera.com) |
|
Profil || Suche |
|
021 20.08.2001, 20:59 blair |
bitte keine leetspeak, danke. wie stroustroup mal sagte: wenn jemand macros in seinen programmen verwendet, kann das 3 gründe haben: 1. Ein Fehler in der Programmiersprache (Wollte das nur mal loswerden...) --because our freedom sits at the end of a gun |
|
Profil || Suche |
|
022 20.08.2001, 22:55 [PE]Spinator |
Das war nicht leetspeak :) b|773 k3|n3 1337$p34k, d4nk3. Und den 1337-TranZlator gibbet hier... This post was written using Opera 7.0 (http://www.opera.com) |
|
Profil || Suche |
|
023 20.08.2001, 22:58 [PE]Spinator |
Auf das alle Menschen friedlich 1337 sprechen mögen :) --This post was written using Opera 7.0 (http://www.opera.com) |
|
Profil || Suche |
|
024 21.08.2001, 20:00 Prefect |
Heh. Makros können eigentlich recht nützlich sein, solange man sie _sinnvoll_ verwendet. Da können soviele Stroustroups soviel sagen wie sie wollen. In meinem Fall wäre ein Makro sogar einiges sinnvoller, wenn es nicht so problematisch mit dem Debuggen etc.. wäre. cu, Widelands - Gemütliche Aufbaustrategie, Free Software |
|
Profil || Suche |
|

