avr-gcc const und Pointer - Page 2

Do you have a question? Post it now! No Registration Necessary

Translate This Thread From German to

Threaded View
Re: avr-gcc const und Pointer
On 25.03.2015 12:36, Hans-Peter Diettrich wrote:




Quoted text here. Click to load it



so zu verurteilen.


Johannes

--  
Quoted text here. Click to load it


We've slightly trimmed the long signature. Click to see the full one.
Re: avr-gcc const und Pointer
Johannes Bauer schrieb:
Quoted text here. Click to load it



Quoted text here. Click to load it


Quoted text here. Click to load it


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

Re: avr-gcc const und Pointer

Hans-Peter Diettrich:


Quoted text here. Click to load it

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?


Re: avr-gcc const und Pointer
On 26.03.2015 02:48, Myn Seudop wrote:
Quoted text here. Click to load it

Quoted text here. Click to load it

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

--  
Reinhardt

Re: avr-gcc const und Pointer
Myn Seudop schrieb:
Quoted text here. Click to load it

Quoted text here. Click to load it

Siehst Du, so schnell lassen sich neue Informationen mit vorhandenem  



Quoted text here. Click to load it




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

Re: avr-gcc const und Pointer
Am 24.03.2015 um 18:57 schrieb Hans-Peter Diettrich:
...
Quoted text here. Click to load it


nicht mehr als bisher. Ich will Typumwandlungen ja nicht verbieten. Ich  

itoa(cnt)
eine Warnung absetzt und bei
itoa((int)cnt)
nicht, da die Typen kompatibel sind.



Robert



Re: avr-gcc const und Pointer
Robert Loos schrieb:
Quoted text here. Click to load it


Quoted text here. Click to load it

Quoted text here. Click to load it

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

Re: avr-gcc const und Pointer
Am 25.03.2015 um 12:27 schrieb Hans-Peter Diettrich:

Quoted text here. Click to load it


deshalb so, wie es ist.


Quoted text here. Click to load it



Zuweisung) ist.


enum
und eine Funktion die das Viehzeug im Klartext darstellt. Diese Funktion  
mit einem anderen Enum aufgerufen erzeugt keine Warnung aber die Ausgabe  




Quoted text here. Click to load it

Quoted text here. Click to load it



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

Re: avr-gcc const und Pointer
Robert Loos schrieb:
Quoted text here. Click to load it



Quoted text here. Click to load it


Quoted text here. Click to load it




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, <usw>); TPortSet = set of  
TPortBits;
   var Pins: TPortSet absolute PORTB; //Abbildung auf physikalischen Port
   Pins := Pins+[pinLED1,pinLED2]; //Ausgabe
   if pinButton1 in Pins then ... //Abfrage




Quoted text here. Click to load it

Quoted text here. Click to load it


Quoted text here. Click to load it



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


Quoted text here. Click to load it

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










Quoted text here. Click to load it

(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

Re: avr-gcc const und Pointer
Am 25.03.2015 um 12:27 schrieb Hans-Peter Diettrich:



Quoted text here. Click to load it



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

Re: avr-gcc const und Pointer
Bernd Laengerich schrieb:
Quoted text here. Click to load it


Quoted text here. Click to load it


Quoted text here. Click to load it

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

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

Quoted text here. Click to load it



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?


Quoted text here. Click to load it
[...]
Quoted text here. Click to load it









DoDi

Re: avr-gcc const und Pointer
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

Re: avr-gcc const und Pointer
Bernd Laengerich schrieb:
Quoted text here. Click to load it

Quoted text here. Click to load it

Quoted text here. Click to load it


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





Quoted text here. Click to load it

Quoted text here. Click to load it

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?



Quoted text here. Click to load it



Quoted text here. Click to load it




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

Re: avr-gcc const und Pointer
On 03/23/2015 03:21 PM, Hans-Peter Diettrich wrote:
Quoted text here. Click to load it




Quoted text here. Click to load it

Quoted text here. Click to load it


Quoted text here. Click to load it

Quoted text here. Click to load it


Quoted text here. Click to load it



Quoted text here. Click to load it


Quoted text here. Click to load it


Quoted text here. Click to load it

Kann der avr-gcc denn jetzt schon die FLASH, EEPPROM und sram speicherbereiche unterscheiden?  
Soweit ich mich erinnere konnte er das nicht. Das gab dann schoen fehler wenn man eines der  
codebeispiele(fuer intels IAR compiler, glaub ich) aus den Atmel Appnotes compilieren wollte.  
Da kam dann halt was an der stelle im sram war(meist irgendein muell). Einfach den  
pointer zu dereferenzieren, das reichte nicht... Fuer alles eigene funktionen.  
Der C standard erlaubt soweit ich mich erinnern tu', das aendern von const variablen  
(ist wie in dem Piratenfilm eher eine Richtlinie).  




Re: avr-gcc const und Pointer
On 23.03.2015 15:21, Hans-Peter Diettrich wrote:





Keine Ahnung was du da meinst. Aber der gcc akzeptiert garantiert kein
C++. Der g++ vielleicht.

Quoted text here. Click to load it

Das ist der Hinweis an den Compiler, dass der Inhalt sich nicht



Quoted text here. Click to load it



Wat? "traditionell"? Und was ist am avr-gcc da untraditionell? Das ist
ein ganz normaler gcc. Ein CONST Segment ist mir auch unbekannt, ich
nehme an du meinst .rodata oder .text?

Wenn du ein globales Array einfach nur const deklarierst, dann legst du

ist der einzige memory-mapped Speicherbereich eben das SRAM und da
landet er dann. Das hat aber nichts mit dem avr-gcc zu tun, sondern mit
dem C-Standard.

Quoted text here. Click to load it


Musst du ins Assembly schauen. Kommt immer drauf an. Global oder

deklariert ist (daher ist ersteres zu bevorzugen). #defines sollte man
eh nur einsetzen, wo es kein entsprechendes Sprachkonstrukt gibt.

Quoted text here. Click to load it


von globalen Variablen oder von funktionslokalen?

Quoted text here. Click to load it



Datentypen, siehe C-Standard. Ein char ist 8 Bit lang, ein int
mindestens 16 Bit lang (auf dem AVR exakt 16 Bit).

Quoted text here. Click to load it

Wenn du nichts weiter spezifizierst im RAM (wegen MMIO, s.o.).

Quoted text here. Click to load it

Das sind 16 Bit Werte.

Quoted text here. Click to load it


verwendest. Also wenn du einen char PROGMEM * (einen Pointer auf einen

(ohne Warnung!) uminterpretiert.



Ne.


Quoted text here. Click to load it


Quoted text here. Click to load it

Das hat alles mit dem avr-gcc nichts zu tun, sondern eher mit C


willst.


Johannes

--  
Quoted text here. Click to load it


We've slightly trimmed the long signature. Click to see the full one.
Re: avr-gcc const und Pointer




Quoted text here. Click to load it

Du redest jetzt nicht von avr-gcc, sondern von arduino, richtig?


anders" ist. Ein nackter avr-gcc will nur C, und avr-c++ nur C++.

Quoted text here. Click to load it


Quoted text here. Click to load it


24-Bit-Pointer, aber wenn Du arduino benutzt, wirst Du so einen kaum haben.

cu
Michael

Re: avr-gcc const und Pointer
Michael Schwingen schrieb:

Quoted text here. Click to load it

Quoted text here. Click to load it

Ah ja, das ist ja schon mal ein Meilenstein auf meinem Einstieg :-)

DoDi

Site Timeline