www.mikrocontroller.net

Forum: Compiler & IDEs Konstante definieren (C-Frage)


Autor: humpfkrömekröm (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Moin,

Wie deklariert man Konstanten eigentlich richtig? In folgendem Code 
meckert der Compiler und ich sehe meinen Fehler nicht.
ISR( TIMER1_OVF_vect )
{
  uint16_t randomrangevalue;
  const  uint16_t pause_type1_length_min = 20;
  const  uint16_t pause_type1_length_max = 2000;
  static uint16_t pause_type1_length = pause_type1_length_min; // Fehler in dieser Zeile "..is not constant"

es kommt der Fehler "../test03.c:31: error: initializer element is not 
constant"


Gruß Krömer

Autor: johnny.m (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Warum machst Du das nicht mit einem Makro?
#define pause_type1_length_min 20
#define pause_type1_length_max 2000

  

Autor: humpfkrömekröm (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
grml...

ich möchte echt mal gerne wissen, was ich vorhin falsch gemacht hatte. 
Ich hatte das nämlich zunächst mit define machen wollen aber es kam ein 
Fehler mit dem ich nichts anfangen konnte. Jetzt habe ich deine zwei 
Zeilen direkt kopiert und jetzt läuft es auf einmal.. grübel

danke dir auf jeden Fall für die schnelle Hilfe!

Autor: johnny.m (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Wie sah das denn bei Dir vorher mit dem #define aus? Hast Du etwa ein 
Semikolon hinter das "#define ..." geschrieben? Das wäre so ein 
typischer Fehler...

Autor: Jörg Wunsch (dl8dtl) (Moderator) Benutzerseite
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Das mit dem const würde nur bei C++ funktionieren.  Bei C sind
Konstanten erst einmal Variablen, die read-only sind, damit taugen
sie nicht als initializer.

Antwort schreiben

Die Angabe einer E-Mail-Adresse ist freiwillig. Wenn Sie automatisch per E-Mail über Antworten auf Ihren Beitrag informiert werden möchten, melden Sie sich bitte an.

Wichtige Regeln - erst lesen, dann posten!

  • Groß- und Kleinschreibung verwenden
  • Längeren Sourcecode nicht im Text einfügen, sondern als Dateianhang

Formatierung (mehr Informationen...)

  • [c]C-Code[/c]
  • [avrasm]AVR-Assembler-Code[/avrasm]
  • [code]Code in anderen Sprachen, ASCII-Zeichnungen[/code]
  • [math]Formel in LaTeX-Syntax[/math]
  • [[Titel]] - Link zu Artikel
  • Verweis auf anderen Beitrag einfügen: Rechtsklick auf Beitragstitel,
    "Adresse kopieren", und in den Text einfügen




Bild automatisch verkleinern, falls nötig
Bitte das JPG-Format nur für Fotos und Scans verwenden!
Zeichnungen und Screenshots im PNG- oder
GIF-Format hochladen. Siehe Bildformate.
Hinweis: der ursprüngliche Beitrag ist mehr als 6 Monate alt.
Bitte hier nur auf die ursprüngliche Frage antworten,
für neue Fragen einen neuen Beitrag erstellen.

Mit dem Abschicken bestätigst du, die Nutzungsbedingungen anzuerkennen.