avr-gcc const und Pointer

Robert Loos schrieb:

Mir geht es umgekehrt, genau das will ich *nicht*.

erwartet, ist keine Warnung notwendig.

erwartet, da dann Verlust von signifikanten Stellen droht. Dann wurde

statt itoa() verwendet werden - also ziemlich sicher ein Fehler im Design des Programms.

DoDi

Reply to
Hans-Peter Diettrich
Loading thread data ...

Ack. Beliebter Stolperstein: integer promotion

Auf dem PC:

------------------------------------------------------------------------ #include #include #include

int main(void) { unsigned char a = UCHAR_MAX;

printf("a: 0x%X\n", (unsigned int) ~a); exit(0); }

------------------------------------------------------------------------ Ergebnis: | | a: 0xFFFFFF00

kommen. Meistens wollte man aber wohl eher das hier:

------------------------------------------------------------------------ #include #include #include

int main(void) { unsigned char a = UCHAR_MAX;

printf("a: 0x%X\n", (unsigned int) (unsigned char) ~a); exit(0); }

------------------------------------------------------------------------ Ergebnis: | | a: 0x0

Reply to
Michael Baeuerle

Michael Baeuerle schrieb:

nicht lange zu warten :-(

DoDi

Reply to
Hans-Peter Diettrich

Hallo Hans-Peter,

Hans-Peter Diettrich schrieb:

Jetzt nochmal langsam: man hat also nur einen einzigen Datentyp und mit dem kann der Compiler dann von diesem einzigen Datentyp zu diesem einzigen

noch wie man sie zuweist?

87432947239847239482734983274329874329847329847324983274329847329847324987324

Prozessorregister sind?

Ja, und nicht mehr als 640 kB.

Und zwischen all dem wandelt der Compiler dann hin und her ohne mich zu fragen. *Grusel*

Reply to
Martin Schoenbeck

Am 25.03.2015 um 12:27 schrieb Hans-Peter Diettrich:

deshalb so, wie es ist.

Zuweisung) ist.

enum{Hund,Katze,Maus} und eine Funktion die das Viehzeug im Klartext darstellt. Diese Funktion mit einem anderen Enum aufgerufen erzeugt keine Warnung aber die Ausgabe

nachgedacht hat. Z.B. bei Rechnungen der Form a*b/c, in denen Zwischenergebnisse den Wertebereich verlassen, das Endergebnis aber wieder passt. Oder bei Mittelwertbildungen.

hab' ich's jetzt nicht).

Robert

Reply to
Robert Loos

Wahrscheinlich gibt Delphi die Warnung aus: Sprache und Programmierer nicht geeignet. ;-)

--
Reinhardt
Reply to
Reinhardt Behm

Am 25.03.2015 um 12:27 schrieb Hans-Peter Diettrich:

hier "der Verlust von signifikanten Stellen droht". Und auch der

type SMALL = 0..100; BIG = 0..1000;

var myBigValue : BIG; mySmallValue : SMALL;

Procedure doSomething( value : SMALL ) begin [...] end;

begin myBigValue := 12; mySmallValue := myBigValue; doSomething(mySmallValue ); end;

Bernd

Reply to
Bernd Laengerich

so zu verurteilen.

Johannes

--
>> Wo hattest Du das Beben nochmal GENAU vorhergesagt? 


Kosmologen: Die Geheim-Vorhersage.
Reply to
Johannes Bauer

Hans-Peter Diettrich:

Wenn man bedenkt, dass du am Montag noch nicht einmal den Unterschied zwischen C, C++ und der "Arduino-Sprache" kanntest, hast du dich aber schnell zum Experten entwickelt, wenn du jetzt schon das Typsystem beurteilen und deine Abneigung kundtun magst.

Myn

PS: Wie programmiert man den Arduino eigentlich in dem ach-so-tollen Delphi?

Reply to
Myn Seudop

Martin Schoenbeck schrieb:

Ja, so ist es.

mit Deinem Lieblingcompiler.

DoDi

Reply to
Hans-Peter Diettrich

weil das eine herrliche Entwicklungsumgebung auf dem ST war - im Gegensatz zu den ganzen damaligen C Compilern und Entwicklungssystemen.

System, das gleichzeitig Graphik und I/O treiben konnte, ohne dabei

Borland-C hinzu, da habe ich als Betatester auf dem PC und ST mitgemacht, und mit meinem Decompiler Fehler in den (damals

Fehler in den Beispielprogrammen von Microsoft gefunden. Seitdem wundert

C++ selbst entwickelt, das war mein WinHelp-Decompiler. Ansonsten kenne

als Newbie bzgl. C ansieht, mangels praktischer Erfahrung damit bin ich das ja auch. Umgekehrt wie viele Pascal Programmierern benutze ich aber

zweiten Teil noch Informationen, wie ich mich in C sinnvollerweise

werden kann, je weiter man in die Tiefen von C/C++ hinuntersteigt, ist

DoDi

Reply to
Hans-Peter Diettrich

Myn Seudop schrieb:

Siehst Du, so schnell lassen sich neue Informationen mit vorhandenem

Schreiben von Programmen oder mit der Entwicklung eines besseren Compilers befassen soll.

Und geh mir weg mit Delphi, das ist seit dem Verkauf von Borland zur

Version mehr vergreifen, die neuer ist als Delphi 7.

DoDi

Reply to
Hans-Peter Diettrich

Bernd Laengerich schrieb:

Bei der *expliziten* Verwendung von Modulo geht (aus matehmatischer

katastrophaler Verlust, wenn man eine Variable auf Null setzt ;-)

Bei einer ganzzahligen Division ist das durchaus der Fall, und das sollte jeder Programmierer beachten. Beim Rechnen mit Gleitkommazahlen sind Verluste systembedingt, auch das sollte jeder Programmierer wissen und beachten. Oder worauf wolltest Du hinaus?

[...]

DoDi

Reply to
Hans-Peter Diettrich

Robert Loos schrieb:

In Pascal ist eine enum ein eigener Datentyp, der (dank Typsicherheit) mit anderen Datentypen inkompatibel ist, selbst wenn diese die gleiche

Texten in Frage: type THKM = (Hund, Katze, Maus); const HKM: array[THKM] of string = ('Hund', 'Katze', 'Maus');

Und noch etwas Reklame: Ein "set" ist die Abbildung einer enum auf einen ganzzahligen Typ, womit sich Bitfummeleien bei Conroller-Ports leicht einsparen lassen: type TPortBits = (pinLED1, pinButton1, ); TPortSet = set of TPortBits; var Pins: TPortSet absolute PORTB; //Abbildung auf physikalischen Port Pins := Pins+[pinLED1,pinLED2]; //Ausgabe if pinButton1 in Pins then ... //Abfrage

kann, und immer noch eine Meldung ausgeben kann, wenn keine Funktion auf

Das ist ein kritischer Punkt, weil ein Compiler da (als Optimierung) oft

(Ich auch nicht ;-)

Recherche nicht mal leicht zu erkennen. Eigentlich sollten unkommentierte Typecasts verboten werden, das hilft aber nicht wirklich weiter. Deshalb wurde ja schon in C++ eine ganze Reihe von

DoDi

Reply to
Hans-Peter Diettrich

Hallo Hans-Peter,

Hans-Peter Diettrich schrieb:

Ist schon eine kuriose Definition von Datentyp.

Reply to
Martin Schoenbeck

Am 25.03.2015 um 22:43 schrieb Hans-Peter Diettrich:

eigentlich egal) ohne typecast eine Warnung und MIT explizitem typecast keine Warnung gibt und Du wolltest es da genau anders herum. Bei Delphi sollte das nun wieder anders sein? Das erschliesst sich mir alles nicht

des zu schreibenden Quelltextes definiert und keineswegs die Methodik, Algorithmen und Datenstrukturen.

das immer den gleichen Eindruck wie Visual Basic) und meine Erfahrungen

PROM giessen konnte und viele Dinge die die Hardware betrafen mit Assembler-Code angehen musste.

Bernd

Reply to
Bernd Laengerich

Bernd Laengerich schrieb:

mit "int cnt" und typedef. Da war ohne Typecast keine Warnung notwendig,

Die Syntax einer Programmiersprache ist doch wirklich nur Geschmackssache, wesentlich ist die Semantik. Wenn jemand Pascal nur

Oder hast Du nur Syntax und Semantik verwechselt?

damit Anwendungsprogramme zu schreiben. Und weil es so einfach war, einen Pascal Compiler aufzubohren, kamen viele Bastler auf die Idee, daraus eine praxistaugliche Sprache zu machen - mit unterschiedlichem Erfolg, je nach ihren Kenntnissen und Anforderungen. Und zu den

sondern auch noch der komplette Compiler!

sein Maschinencode erzeugt wurde :-]

DoDi

Reply to
Hans-Peter Diettrich

ElectronDepot website is not affiliated with any of the manufacturers or service providers discussed here. All logos and trade names are the property of their respective owners.