- LiTime Speicher und Akkus         
Seite 2 von 2 ErsteErste 12
Ergebnis 11 bis 13 von 13

Thema: Arduino automatische Abschaltzeit

  1. #11
    Erfahrener Benutzer Robotik Einstein Avatar von i_make_it
    Registriert seit
    29.07.2008
    Ort
    Raum DA
    Alter
    55
    Beiträge
    2.814
    Anzeige

    LiFePo4 Akku selber bauen - Video
    Zitat Zitat von HaWe Beitrag anzeigen
    Definiert man ihn per
    int Anzahl[24] //...
    kann man ihn anschließend nicht mehr per
    {1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20, 21, 22, 23, 24};
    initialisieren.
    Hm, ich weis jetzt nicht von welcher Programmiersprache Du schreibst, aber ich bin grade bei ISO IEC 14882.
    Weder mein Borland noch Arduino haben damit ein Problem, das ich ein statisches Array genau so definiere und initialisiere.

    Wenn Das bei Dir nicht möglich ist, und es für Dich der einzige Weg ist es wie ein dynamisches Array zu definieren, würde ich an deiner Stelle mal Deine Entwicklungsumgebung überprüfen.
    Und falls Du kein Buch über C++ hast, es gibt auch Webseiten die das erklären.
    http://www.cplusplus.com/doc/tutorial/arrays/
    Ich habe mal bei meinem Borland "strict" mal abgestellt. dann wird auch 'int Anzahl[] = {.....}' nicht an gemeckert.
    Bei Arduino hatte ich es tatsächlich so noch nicht probiert, da mein erstes C auf µC's das MIT interactive C war und ich seit dem Array so definiere.

    Dynamische Array auf einen µC mache ich halt aus 'Tradition' nicht. Liegt vieleicht daran das ich heute noch Speicherplatz als kostbar betrachte.
    Bin halt auch noch gewohnt ganze Programme, Stack und Variablen Bereich mit 4K RAM hinzubekommen.

    Und bei 'int Anzahl[24]' sehe ich halt direkt 2Byte (für int) mal 24 gleich 48 Byte Speicherbedarf.
    Und muß nicht erst zeitraubend die Kommas abzählen und dann plus 1 um die Anzahl der Felder zu erhalten.

    Aber wie gesagt ich empfinde es als unschönen Code, funktionieren tut es.

    Zitat Zitat von HaWe Beitrag anzeigen
    Es ist per
    int Anzahl[] = // ...
    der einzige (!) mögliche (!) Weg, diesen 24er array direkt bei der Definition zu initialisieren.
    Diese Aussage, ist aber schlichtweg falsch (Zumindest für eine ISO IEC 14882 konforme C++ Implemtierung. Und was anderes ist ja kein C++ sondern eine andere Sprache).
    Es ist einer der möglichen Wege.
    Geändert von i_make_it (30.06.2017 um 07:57 Uhr)

  2. #12
    Erfahrener Benutzer Roboter Experte
    Registriert seit
    04.09.2011
    Ort
    Hessen
    Beiträge
    707
    Zitat Zitat von i_make_it Beitrag anzeigen
    Diese Aussage, ist aber schlichtweg falsch (Zumindest für eine ISO IEC 14882 konforme C++ Implemtierung. Und was anderes ist ja kein C++ sondern eine andere Sprache).
    Da muss ich HaWe jetzt aber beispringen, zu diesen C++ Zeiten war ich an der Uni.

    Ja, die Initialisierung von Array in der Form
    Code:
    int feld[] = { 1, 2, 3 };
    gibt es schon seit Anfang an in C++, weil es sie schon seit dieser Zeit in C gab.

    Und ja, es war damals, also auch in den ersten ISO Normen, die einzige Möglichkeit ein C Array direkt bei der Definition zu initialisieren. Und zwar nur C Array keine Vektoren oder so.


    Und ja, es war schon damals guter Stil, die Größe des Feldes nicht extra in die eckigen Klammern zu schreiben.

    Daraus, und das vermischt HaWe etwas, wurde die "Uniform Initialisation" in C++11, neuer Stil wäre also eher
    Code:
    array<int> feld = { 1, 2, 3 }
    
    auto n = feld.size();
    Hier wird auch bei n nicht mal der Typ angegeben, das nennt sich AAA-Stil (almost always auto), wird von einigen Experten empfohlen (Scott Meyers, Herb Sutter, ...), ist aber nicht unumstritten.

    Man kann heute übrigens, in aktuellem C++, in der Arduino IDE nur bei den Teensy Boards, alles mit geschweiften Klammern initialisieren
    Code:
    int a = 1;
    
    int b{2};
    Warum das in der ISO Norm u.a. geändert wurde, kann man hier lesen
    https://en.wikipedia.org/wiki/Most_vexing_parse
    Geändert von Mxt (05.07.2017 um 14:10 Uhr) Grund: Verschrieben

  3. #13
    Erfahrener Benutzer Robotik Einstein Avatar von i_make_it
    Registriert seit
    29.07.2008
    Ort
    Raum DA
    Alter
    55
    Beiträge
    2.814
    Zitat Zitat von Mxt Beitrag anzeigen
    Ja, die Initialisierung von Array in der Form
    Code:
    int feld[] = { 1, 2, 3 };
    gibt es schon seit Anfang an in C++, weil es sie schon seit dieser Zeit in C gab.
    Gut, etwas was ich nicht gewust habe.

    Ich habe halt Anfang der 1980er Jahre mit Atari Basic und Commodore Basic4 angefangen und dann 6510 Assembler und 8048/8051 Assembler, mit dem Atari ST dann ST-Pascal und 68000 Assembler. Dann kamen in den 1990ern Ausflüge in PC und S360 COBOL und APL2 und LISP für AutoCAD. Auf dem PC habe ich dann mit TurboPascal weitergemacht und dann Delphi. Mit C habe ich dann erst mit Interactive C vom MIT angefangen und dann halt auf Borland C++ Builder geschwenkt als Delphi sich unter Windows als Sackgasse erwies, da die Windows APIs ja eh in C++ sind und man sich damit sowieso befassen muß. Da habe ich zum einen die Notation schon so kennengelernt und zum anderen, da ich knappen Speicher gewohnt bin, ist für mich halt ein schöner Code der, bei dem ich sofort sehe welche Resourcen ich benötige. Da kann man auch schon mal schnell im Kopf überschlagen ob man auf das Zielsystem noch mal ein Feature mehr draufpacken kann oder ob es Zeit wird die Plattform zu wechseln.
    Deshalb bleibe ich dabei das es für mich unschöner Code ist und seit ich mit C++ arbeite ist diese Notation halt nicht der einzige Weg. Seit 1979 hat sich halt auch einiges bei C++ getan. Und ich kenne halt auch nur die Geschichte von den Dingen für die ich mich entsprechend interessiere. Bei C++ ist es halt nur eine weitere Programmiersprache die als Werkzeug dazu kam. Und die Interessen lagen und liegen anders. Wenn ich was suche, schlag ich nach und in den Unterlagen von heute (und denen die ich aus den 2000ern habe) ist es halt bereits so drin.

Seite 2 von 2 ErsteErste 12

Ähnliche Themen

  1. Automatische Stromversorgung
    Von AndreasMüler im Forum Schaltungen und Boards der Projektseite Mikrocontroller-Elektronik.de
    Antworten: 4
    Letzter Beitrag: 14.08.2010, 14:36
  2. automatische Heizungsreglung
    Von daniel.weber im Forum Vorstellung+Bilder+Ideen zu geplanten eigenen Projekten/Bots
    Antworten: 3
    Letzter Beitrag: 27.03.2008, 07:56
  3. automatische Toröffnung?
    Von spec im Forum Elektronik
    Antworten: 4
    Letzter Beitrag: 16.12.2007, 09:44
  4. automatische Singalamplitudenanpassung
    Von hacker im Forum Elektronik
    Antworten: 5
    Letzter Beitrag: 23.08.2006, 15:37
  5. Automatische Sensorerkennung
    Von Tomili im Forum AVR Hardwarethemen
    Antworten: 1
    Letzter Beitrag: 07.04.2006, 22:26

Berechtigungen

  • Neue Themen erstellen: Nein
  • Themen beantworten: Nein
  • Anhänge hochladen: Nein
  • Beiträge bearbeiten: Nein
  •  

LiTime Speicher und Akkus