Forum: Mikrocontroller und Digitale Elektronik Volatile Variable wird immer als undeklariert gemeldet


von Stefan (Gast)


Lesenswert?

Guten Tag,

wenn ich das Code Beispiel für C zur Tasterentprellung von Peter 
Danegger (http://www.mikrocontroller.net/articles/Entprellung) aptippe 
bekomme ich immer diese Meldung:

Error  10  'key_press' undeclared (first use in this function)


http://www.mikrocontroller.net/articles/Entprellung


Ich verstehe nicht warum, denn diese Variable ist als volatile vor dem 
Hauptprogramm sprich while(1) deklariert.

volatile uint8_t key_press;



Dennoch bekomme ich die Meldung das sie nicht deklariert wäre.


Beste Grüße
Stefan

von Peter II (Gast)


Lesenswert?

Stefan schrieb:
> Dennoch bekomme ich die Meldung das sie nicht deklariert wäre.

zeige bitte den Quellcode.

von Rufus Τ. F. (rufus) Benutzerseite


Lesenswert?

Zeige genau Deinen Code.

von S. R. (svenska)


Lesenswert?

Wenn du die Variable innerhalb einer Funktion deklarierst, dann ist 
sie außerhalb einer Funktion nicht sichtbar, d.h. undeklariert.

von Stefan (Gast)


Lesenswert?

Hier der Code stark gekürzt aber die wichtigsten Passagen:
1
#ifndef F_CPU
2
#define F_CPU 2000000UL
3
#endif
4
5
#include <avr/io.h>
6
#include <util/delay.h>
7
#include <stdint.h>
8
#include <avr/interrupt.h>
9
10
11
int main(void)
12
{
13
//Deklaration der Init Funktionen
14
void init_cpuClock(void);  //stellt Taktfrequenz auf 2MHz
15
void test_ledgruen(void);
16
void test_leddualrot(void);
17
void test_leddualgruen(void);
18
void test_pwmled(void);
19
void ladestatus_pruefen_anzeigen(void);
20
21
init_cpuClock();
22
23
// Ein- Ausgangs Deklaration
24
PORTC.DIR |= (1<<PIN0) | (1<<PIN1) | (1<<PIN2) | (1<<PIN3) | (1<<PIN4);
25
PORTE.DIR |= (1<<PIN0) | (1<<PIN3);
26
PORTD.DIR = 0b00000000;
27
PORTA.DIR = 0b00000000;
28
29
// Timer-PWM Konfiguration
30
TCC0.CTRLB = TC_WGMODE_SINGLESLOPE_gc | TC0_CCAEN_bm; //Single Slope und Compare freigabe
31
TCC0.PER = 0x0FFF; // 12bit Auflösung
32
TCC0.CTRLA = TC_CLKSEL_DIV4_gc; //Prescale 4
33
34
// Timer fuer Taster Abfrage
35
TCD0.CTRLB = TC_WGMODE_NORMAL_gc; // Normal Mode
36
TCD0.CTRLA = TC_CLKSEL_DIV1_gc; // Prescaler
37
TCD0.INTCTRLA = TC_OVFINTLVL_HI_gc;
38
TCD0.INTCTRLA = 0x03; // Interrupt Prio auf höchste Stufe
39
TCD0.PER = 20000;  // Timer Topwert 10ms Abtastrate
40
41
PMIC.CTRL |= PMIC_HILVLEN_bm | PMIC_LOLVLEN_bm | PMIC_MEDLVLEN_bm; //Interrupts aktivieren ( HIGH LOW MIDDLE)
42
43
44
45
46
// LED`s
47
#define  led_pwm TCC0.CCA
48
#define   port_led PORTC
49
#define  pin_ledgruen PIN1   //LED Gruen
50
#define  pin_leddualgruen  PIN3   //Dual LED Gruen
51
#define  pin_leddualrot  PIN2   //Dual LED Rot
52
53
//Ladecontroller
54
#define port_stat PORTD
55
#define  pin_stat1  PIN0   //Status PIN`s Ladecontroller
56
#define   pin_stat2  PIN1
57
58
//Variablen fuer Taster-Abfrage
59
#define KEY_DDR         DDRB
60
#define KEY_PORT        PORTB
61
#define KEY_PIN         PINB
62
#define KEY0            0
63
#define KEY1            1
64
#define KEY2            2
65
#define ALL_KEYS        (1<<KEY0 | 1<<KEY1 | 1<<KEY2)
66
 
67
#define REPEAT_MASK     (1<<KEY1 | 1<<KEY2)       // repeat: key1, key2
68
#define REPEAT_START    50                        // after 500ms
69
#define REPEAT_NEXT     20                        // every 200ms
70
 
71
 
72
volatile uint8_t key_state;                               
73
volatile uint8_t key_press;                                
74
volatile uint8_t key_rpt;
75
76
// LED Ports auf HIGH setzen  
77
port_led.OUT |= (1<<pin_leddualgruen) | (1<<pin_leddualrot);   // 2 Farb LED
78
port_led.OUT |= (1<<pin_ledgruen);        // LED gruen
79
led_pwm = 0;
80
  
81
sei();
82
83
84
85
 while(1)
86
  {
87
    if( get_key_short( 1<<KEY1 ))
88
    
89
    
90
    if( get_key_long( 1<<KEY1 ))
91
    
92
    
93
    if( get_key_press( 1<<KEY1 ) || get_key_rpt( 1<<KEY1 )){
94
    
95
    }
96
{
97
98
99
ISR(TCD0_OVF_vect)
100
{
101
static uint8_t ct0, ct1, rpt;
102
uint8_t i;
103
104
TCNT0 = (uint8_t)(int16_t)-(F_CPU / 1024 * 10e-3 + 0.5);  // preload for 10ms
105
106
i = key_state ^ ~KEY_PIN;                       // key changed ?
107
ct0 = ~( ct0 & i );                             // reset or count ct0
108
ct1 = ct0 ^ (ct1 & i);                          // reset or count ct1
109
i &= ct0 & ct1;                                 // count until roll over ?
110
key_state ^= i;                                 // then toggle debounced state
111
key_press |= key_state & i;                     // 0->1: key press detect
112
113
if( (key_state & REPEAT_MASK) == 0 )            // check repeat function
114
rpt = REPEAT_START;                          // start delay
115
if( --rpt == 0 ){
116
  rpt = REPEAT_NEXT;                            // repeat delay
117
  key_rpt |= key_state & REPEAT_MASK;
118
}

: Bearbeitet durch User
von chris (Gast)


Lesenswert?

Stefan schrieb:
> volatile uint8_t key_press;

na also.
Das gehört nicht in die main(), sondern global, d.h. davor.

von Nil (nilsnilss)


Lesenswert?

Globale Variablen und Funktionen sollten auch global (außerhalb der 
main) deklariert werden.

von Falk B. (falk)


Lesenswert?

@Stefan (Gast)

>Hier der Code stark gekürzt aber die wichtigsten Passagen:

Klassischer Tip #1: Kauf dir mal ein C-Grundlagenbuhc und lies es.


>int main(void)
>{
>//Deklaration der Init Funktionen
>void init_cpuClock(void);  //stellt Taktfrequenz auf 2MHz

Die haben in der Funktion NICHTS zu suchen!

>// LED`s
>#define  led_pwm TCC0.CCA
>#define   port_led PORTC

Ebenso nicht die #define. Die gehören in die .h Headerdateien.

>volatile uint8_t key_state;
>volatile uint8_t key_press;
>volatile uint8_t key_rpt;

Ebenso nicht globale Variablen! Die gehören ausserhalb von main()

https://www.mikrocontroller.net/articles/FAQ#Ich_hab_da_mehrere_.2A.c_und_.2A.h_Dateien._Was_mache_ich_damit.3F

von Stefan (Gast)


Lesenswert?

Vielen Dank für die rasche Hilfe!

Leider ist die C Vorlesung in der Uni schon eine Zeit her. :-)

von Karl H. (kbuchegg)


Lesenswert?

Und ordentliches Einrücken ist kein Luxus, sondern eine vitale Hilfe. 
Dann passiert es dir auch nicht, dass du etwas für eine globale Variable 
hältst, was in Wirklichkeit eine lokale Variable von main() ist.

Es ist meiner Meinung nach kein Zufall, dass diejenigen mit dem 
schlampigst geschriebenem Code auch immer diejenigen mit den dümmsten 
Fehlern sind.

: Bearbeitet durch User
von Stefan (Gast)


Lesenswert?

Ich finde es sehr schade, dass es in diesem Forum nicht möglich ist 
höflich eine Frage zu stellen und einfach eine nette Antwort darauf zu 
bekommen.

In 90% der Fälle antworten Menschen die einem in irgendeiner Hinsicht 
mit ihren Ansichten belehren oder beschimpfen wollen. (Denke aus 
Langeweile oder Selbstverherrlichung)
Anstatt einfach höflich auf die Frage zu antworten.
Leider bin ich nicht wie ihr mit allwissender Weißheit vom Himmel 
gefallen.

Danke an alle die normal und hilfreich antworten. Ihr habt mir schon oft 
gut weiter geholfen.

von Rufus Τ. F. (rufus) Benutzerseite


Lesenswert?

Stefan schrieb:
> Ich finde es sehr schade, dass es in diesem Forum nicht möglich ist
> höflich eine Frage zu stellen und einfach eine nette Antwort darauf zu
> bekommen.

Du hast ziemlich sachliche Antworten bekommen, die allesamt 
sachdienlich waren.

Karl Heinz, der sonst eine Engelsgeduld an den Tag legt, hat anscheinend 
einfach keine Lust mehr, ständig und immer wieder die banalsten 
Grundlagen wiederzukäuen, die in jedem, aber auch wirklich jedem 
C-Buch enthalten sind, und die man sich anlesen muss, wenn man mit der 
Sprache arbeiten will.

Und das hat er verhältnismäßig milde formuliert.

Wenn Du Dich mit der Formulierung "schlampig geschriebener Code" 
ungerecht behandelt fühlst -- das ist schlampig geschriebener Code, da 
beißt die Maus keinen Faden ab. Da hat Karl Heinz einfach nur recht.

Was erwartest Du? Sollen wir Dich anlügen und schreiben, daß das aber 
schon ein ganz tolles Programm mit einem ganz tollen Programmierstil 
ist, aber leider leider die Compiler so doof sind, daß sie nicht 
verstehen, was Du meinst?

Das bringts doch nicht.

Und auch Karl Heinz hat vor der Kritik einen hilfreichen Hinweis 
angebracht.

Also: Was Dich da piekst, bist Du selbst.

von Karl H. (kbuchegg)


Lesenswert?

Stefan schrieb:
> Ich finde es sehr schade, dass es in diesem Forum nicht möglich ist
> höflich eine Frage zu stellen und einfach eine nette Antwort darauf zu
> bekommen.

Ich finde es sehr schade, dass viele zwar programmieren wollen, aber 
noch nicht einmal über rudimentäre Kentnisse ihrer Programmiersprache 
verfügen. Etwas, das mit einem Lehrbuch und etwas Übung überhaupt kein 
Problem darstellt. Schliesslich haben es die Regulars auch so gelernt.

Frag dich mal selbst: würdest du auch so denken, wenn es sich um ein 
Problem im Strassenverkehr handelt und dein Gegenüber keine AHnung von 
den grundlegensten Verkehrsregeln hat? Was würdest du sagen, wenn ein 
Autfahrer einfach einen Fussgänger auf dem Zebrastreifen niedermäht und 
sich hinterher damit 'entschuldigt', dass er ja nicht gewusst hätte, was 
diese seltsamen Streifen auf der Strasse für eine Bedeutung haben? Und 
ausserdem hätte er wegen dem ganzen Müll hinter dem Lenkrad die Streifen 
sowieso nicht sehen können.
Würdest du dann auch denken, dass es nicht besonders zielführend ist ihm 
nahezulegen, dass der Berg Mc-Donalds Schachteln nichts auf der Ablage 
vor dem Lenkrad verloren haben und er gefälligst für freie Sicht sorgen 
soll?

: Bearbeitet durch User
von xXx (Gast)


Lesenswert?

Stefan schrieb:
> while(1)
>   {
>     if( get_key_short( 1<<KEY1 ))
>
>
>     if( get_key_long( 1<<KEY1 ))
>
>
>     if( get_key_press( 1<<KEY1 ) || get_key_rpt( 1<<KEY1 )){
>
>     }

Das macht ziemlich wahrscheinlich auch nicht, was du erwartest.

von Falk B. (falk)


Lesenswert?

@Rufus Τ. Firefly (rufus) (Moderator) Benutzerseite

>Karl Heinz, der sonst eine Engelsgeduld an den Tag legt, hat anscheinend
>einfach keine Lust mehr, ständig und immer wieder die banalsten
>Grundlagen wiederzukäuen, die in jedem, aber auch wirklich jedem
>C-Buch enthalten sind, und die man sich anlesen muss, wenn man mit der
>Sprache arbeiten will.

Wird auch Zeit. Weisheit des Alters?

>Wenn Du Dich mit der Formulierung "schlampig geschriebener Code"
>ungerecht behandelt fühlst -- das ist schlampig geschriebener Code, da
>beißt die Maus keinen Faden ab. Da hat Karl Heinz einfach nur recht.

tststststs, das ist aber nicht kuschel-pädagogisch wertvoll! JEDER 
Mensch ist toll, geradeheraus ein Genie, man muss das nur richtig 
darstellen!

>Was erwartest Du? Sollen wir Dich anlügen und schreiben, daß das aber
>schon ein ganz tolles Programm mit einem ganz tollen Programmierstil
>ist, aber leider leider die Compiler so doof sind, daß sie nicht
>verstehen, was Du meinst?

Wie wäre es mit

"Lieber Fragesteller, du hast eine sehr interessante, neue Syntax 
gefunden, über die wir unbedingt einmal sprechen müsssen. Leider sind 
die heute verfügbaren Kompiler aus der Steinzeit und nicht offen für ein 
neues, tolerantes Weltbild der C-Programmierung. Aber lass dich nicht 
beirren, eines Tages werden diese Primitivwerkzeuge dich nicht mehr in 
der Auslebung deiner individuellen Persönlichkeit einschränken."

;-)

>Das bringts doch nicht.

>Und auch Karl Heinz hat vor der Kritik einen hilfreichen Hinweis
>angebracht.

>Also: Was Dich da piekst, bist Du selbst.

Nö, der Zeitgeist, der sachliche Kritik immer mit einem persönlichen 
Angriff gleichsetzt. Und die Tatsache, dass immer weniger Leute klare 
Worte verstehen, geschweige denn vertragen. Kuschelsprache rulez!

von Karl H. (kbuchegg)


Lesenswert?

Falk B. schrieb:
> @Rufus Τ. Firefly (rufus) (Moderator) Benutzerseite
>
>>Karl Heinz, der sonst eine Engelsgeduld an den Tag legt, hat anscheinend
>>einfach keine Lust mehr, ständig und immer wieder die banalsten
>>Grundlagen wiederzukäuen, die in jedem, aber auch wirklich jedem
>>C-Buch enthalten sind, und die man sich anlesen muss, wenn man mit der
>>Sprache arbeiten will.
>
> Wird auch Zeit. Weisheit des Alters?

:-)
Resignation vor der Realität.

von Stefan (Gast)


Lesenswert?

>Du hast ziemlich sachliche Antworten bekommen, die allesamt
>sachdienlich waren.

Stimmt größtenteils

>Karl Heinz, der sonst eine Engelsgeduld an den Tag legt, hat anscheinend
>einfach keine Lust mehr, ständig und immer wieder die banalsten
>Grundlagen wiederzukäuen,

Es ist nicht seine Pflicht mir zu antworten wenn er keine Lust hat.


>Was erwartest Du? Sollen wir Dich anlügen und schreiben, daß das aber
>schon ein ganz tolles Programm mit einem ganz tollen Programmierstil
>ist, aber leider leider die Compiler so doof sind, daß sie nicht
>verstehen, was Du meinst?

Ich erwarte garnichts, ich hoffe das mir jemand meine Frage beantworten 
kann. Nicht mehr und nicht weniger. Veileicht fang ich am besten mal 
damit an ein Buch zu lesen wie man eine PC-Maus richtig hält bevor ich 
hier etwas frage. Nicht das ich jemandem auf den Zeiger geh.

>Frag dich mal selbst: würdest du auch so denken, wenn es sich um ein
>Problem im Strassenverkehr handelt und dein Gegenüber keine AHnung von
>den grundlegensten Verkehrsregeln hat? Was würdest du sagen, wenn ein
>Autfahrer einfach einen Fussgänger auf dem Zebrastreifen niedermäht und
>sich hinterher damit 'entschuldigt', dass er ja nicht gewusst hätte, was
>diese seltsamen Streifen auf der Strasse für eine Bedeutung haben?

Wenn mich jemand fragen würde wie eine Ampel funktioniert würde ich es 
ihm erklären und ihm nicht sagen er solle sich erstmal anschauen wie ein 
Auto funktioniert.
Und wenn ich dazu keine Lust hätte würde ich es bleiben lassen und ihm 
nicht erklären das er die dümmstem Fragen stellt

von Rufus Τ. F. (rufus) Benutzerseite


Lesenswert?

Stefan schrieb:
> Ich erwarte garnichts, ich hoffe das mir jemand meine Frage beantworten
> kann.

Bis zu Deinem #Aufschrei hat jeder hier Deine Frage beantwortet. Auch 
Karl Heinz.

Du solltest dringend an Deiner Kritikfähigkeit arbeiten.

von Peter D. (peda)


Lesenswert?

xXx schrieb:
> Das macht ziemlich wahrscheinlich auch nicht, was du erwartest.

Und zuerst mal stellt sich die Frage, wie überhaupt
ein Mensch diese 4 unterschiedlichen Ereignisse in 4 verschiedene 
Drückverhalten des selben Tasters codieren soll.

Mehr als 2 Drückverhalten je Taste sind nicht ergonomisch.

von Stefan (Gast)


Lesenswert?

Und für die netten Komentare kann ich nur erneut sagen:

>Ich finde es sehr schade, dass es in diesem Forum nicht möglich ist
>höflich eine Frage zu stellen und einfach eine nette Antwort darauf zu
>bekommen.

>In 90% der Fälle antworten Menschen die einem in irgendeiner Hinsicht
>mit ihren Ansichten belehren oder beschimpfen wollen. (Denke aus
>Langeweile oder Selbstverherrlichung)
>Anstatt einfach höflich auf die Frage zu antworten.
>Leider bin ich nicht wie ihr mit allwissender Weißheit vom Himmel
>gefallen.

>Danke an alle die normal und hilfreich antworten. Ihr habt mir schon oft
>gut weiter geholfen.

von Karl H. (kbuchegg)


Lesenswert?

Stefan schrieb:

> Wenn mich jemand fragen würde wie eine Ampel funktioniert würde ich es
> ihm erklären und ihm nicht sagen er solle sich erstmal anschauen wie ein
> Auto funktioniert.

Von 'Auto funktionier' war keine Rede.

Die Rede ist davon (um dein Beispiel aufzugreifen), dass du mit einem 
anderen Autofahrer an einer Kreuzung zusammen gestossen bist, dem du 
erklären musst, welche Bedeutung die Ampelfarben haben.

Sorry. Zu diesem Zeitpunkt ist das dann schon ein bisschen spät. Wir 
reden nicht von einer Situation in der Verkehrserziehung, sondern vom 
täglichen Leben. Und da würde ich, und der Gesetzgeber sieht das 
genauso, eigentlich schon erwaren, dass ein aktiver Teilnehmer am 
motorisierten Strassenverkehr die Bedeutung der Ampelfarben kennt. Und 
wenn nicht, dann soll er zuerst in eine Fahrschule gehen! Und ja. Das 
darf man ihm auch genau so sagen.

: Bearbeitet durch User
von Karl H. (kbuchegg)


Lesenswert?

Und um das klar zu stellen.
Ich erachte den Hinweis, dass ein ordentlich formatiertes Programm viele 
Probleme zu vermeiden hilft, durchaus als einen brauchbaren Hinweis.

Oft genug erlebt.
Da hat ein Neuling ein Problem, dem er selbst nicht auf die Spur kommt. 
Dann siehst du dir den COde an und das erste was du als Helfer machst, 
das ist erst einmal für eine ordentliche Formatierung (Einrückung) zu 
sorgen. Und plötzlich sieht derjenige das Problem ganz von sich aus. Der 
einzige Unterschied: vorher war der Code Kraut und Rüben, nachher war er 
ordentlich und konsistent formatiert und eingerückt.

: Bearbeitet durch User
von Stefan (Gast)


Lesenswert?

>Sorry. Zu diesem Zeitpunkt ist das dann schon ein bisschen spät. Wir
>reden nicht von einer Situation in der Verkehrserziehung, sondern vom
>täglichen Leben. Und da würde ich, und der Gesetzgeber sieht das
>genauso, eigentlich schon erwaren, dass ein aktiver Teilnehmer am
>motorisierten Strassenverkehr die Bedeutung der Ampelfarben kennt. Und
>wenn nicht, dann soll er zuerst in eine Fahrschule gehen! Und ja. Das
>darf man ihm auch genau so sagen.

Hast du deine Texte mal selber gelesen. Bevor wir in einer Diskussion 
über das Verkehrsrecht enden gebe ich dir lieber Recht damit du beruhigt 
aufhören kannst.


>Und ordentliches Einrücken ist kein Luxus, sondern eine vitale Hilfe.

>Es ist meiner Meinung nach kein Zufall, dass diejenigen mit dem
>schlampigst geschriebenem Code auch immer diejenigen mit den dümmsten
>Fehlern sind.



Ich werde an der Stelle aus der Diskussion aussteigen und meine Fragen 
wieder an Professoren an der Uni stellen. Habe meine Erfahrung mit 
Forenbeiträgen von Menschen die im richtigen Leben zu wenig Ansprache 
haben gemacht und bereut.

Ich möchte nochmal betonen das mir durchaus einige hier sehr geholfen 
haben!
Leider übertönt vom Geräusch der dummen.

von Rufus Τ. F. (rufus) Benutzerseite


Lesenswert?

Stefan schrieb:
> Leider übertönt vom Geräusch der dummen.

Es tut mir leid - aber Dir kann Dir hier eindeutig nicht zugestimmt 
werden.

von Stefan (Gast)


Lesenswert?

@ Rufus Τ. Firefly

>Es tut mir leid - aber Dir kann Dir hier eindeutig nicht zugestimmt
>werden.


Ich denke das Problem ist das hier die Frage,

"Warum bekomme ich diese Fehlermeldung, obwohl ich es deklariert habe?",

von vielen als,

"Hier ist mein Code ich würde euch bitten mir zu sagen was schlecht 
geschreiben ist und was mann vieleicht besser oder schöner machen 
könnte",

verstanden wird.


Ich denke daher kommt der ganze geistige Aufruhr.

von Karl H. (kbuchegg)


Lesenswert?

Stefan schrieb:

> "Warum bekomme ich diese Fehlermeldung, obwohl ich es deklariert habe?",
>
> von vielen als,
>
> "Hier ist mein Code ich würde euch bitten mir zu sagen was schlecht
> geschreiben ist und was mann vieleicht besser oder schöner machen
> könnte",
>
> verstanden wird.

Nein, wird es nicht.

Wenn der Fehler so aussieht
1
int main()
2
{
3
int i;
4
5
while( irgendwas )
6
{
7
}
8
}
9
10
void foo()
11
{
12
i = 5;
13
}

und du genau diese Fehlermeldung kriegst, dann ist das Problem nicht, 
dass man dir in einer 5 seitigen Abhandlung erzählen muss, wie sich die 
Sache mit dem Scope in C verhält, sondern dass du mit einer vernünftigen 
Formatierung
1
int main()
2
{
3
  int i;
4
5
  while( irgendwas )
6
  {
7
  }
8
}
9
10
void foo()
11
{
12
  i = 5;
13
}

und Rückverfolgung der Klammern ausgehend von der Stelle der 
FEhlermeldung nach aussen ganz von alleine siehst, dass foo das i gar 
nicht sehen kann, weil du dazu in main wieder in eine Klammer 
hineingehen müsstest, was nicht das ist, wie die C Regeln funktionieren. 
Der Sichtbarkeitsbereich einer Variablen ist immer der umschliessende 
Block. Ausserhalb dieses Blocks existiert die Variable nicht. Und jetzt 
gibt es da dann noch ein paar Sonderfälle, die dann eben eine 5 seitige 
Abhandlung erfordern würden - die man sich aber auch sparen kann, weil 
die wirklich in jedem noch so grindigem C-Buch beschrieben sind. Für 
einen Neuling reicht es aber schon, wenn man einfach nur klar macht, 
dass er einfach nur die {} Blockklammern von der Problemstelle 'nach 
aussen' rückverfolgen muss und in diesem Zuge muss er auf die Variable 
stossen können. Nur, wie machst du das denn, wenn du dauernd rauf und 
runter scrollen musst und mit den Fingern mitzählen musst, damit du die 
relevanten { } Klammern überhaupt erst mal findest? Was bei meinem 
Trivialbeispiel noch im Kopf machbar ist, das artet ganz schnell zu 
einem Albtraum aus, wenn der Code etwas größer wird.

Formatierung und Einrückung ist eine Hilfe, die dir selbst Dinge klar 
macht und auch optisch anzeigt und nicht einfach nur Selbstzweck.

: Bearbeitet durch User
von Frank M. (ukw) (Moderator) Benutzerseite


Lesenswert?

Karl H. schrieb:
> Es ist meiner Meinung nach kein Zufall, dass diejenigen mit dem
> schlampigst geschriebenem Code auch immer diejenigen mit den dümmsten
> Fehlern sind.

Da kann ich Dir nur beipflichten.

Ist ja auch logisch: Wer schon bei der Formatierung (auch wenns nur eine 
"technische" Sache ist) keine Sorgfalt anlegt, machts erst recht nicht 
bei der Programmlogik.

Fazit:

      Hingerotztes Programm = Schlechtes Programm.

(Ausnahmen bestätigen die Regel, aber wenn, gibt es da nur ganz wenige)

P.S.

Am besten ist das da:
1
int main(void)
2
{
3
  [...]
4
{
5
6
ISR(TCD0_OVF_vect)
7
{
8
  [...]
9
}

Selbst über diese Handvoll Zeilen muss man schon viermal drüberschauen, 
um den Fehler zu sehen. Ungekürzt jedoch ist es der Horror.

: Bearbeitet durch Moderator
von Stefan (Gast)


Lesenswert?

I geh jetzt aufd Wiesn.
Würd euch auch mal frische Luft empfehlen bei teils über 54000 
Forenbeiträgen laut euren Profilen.
Das sind in 10 Jahren über 10 am Tag XD.

Ich glaub das ist nicht mehr gesund.



Viel Spaß noch!

von mse2 (Gast)


Lesenswert?

Stefan schrieb:
> Ich denke das Problem ist das hier die Frage,
>
> "Warum bekomme ich diese Fehlermeldung, obwohl ich es deklariert habe?",
>
> von vielen als,
>
> "Hier ist mein Code ich würde euch bitten mir zu sagen was schlecht
> geschreiben ist und was mann vieleicht besser oder schöner machen
> könnte",
>
> verstanden wird.
>
> Ich denke daher kommt der ganze geistige Aufruhr.
Junger Freund, wenn ich so lese, woran Du Dich hier stößt, fürchte ich, 
Du bist zu empfindlich für eine Ingenieurslaufbahn.
In Deinem eigenen Interesse würde ich Dir raten, Deinen Standünkt zu 
überdenken - beileibe nicht nur zum Thema C!

von mse2 (Gast)


Lesenswert?

mse2 schrieb:
> ... Standünkt ...
Standpunkt natürlich.

von San L. (zwillingsfreunde)


Lesenswert?

Stefan schrieb:
> I geh jetzt aufd Wiesn.
> Würd euch auch mal frische Luft empfehlen bei teils über 54000
> Forenbeiträgen laut euren Profilen.
> Das sind in 10 Jahren über 10 am Tag XD.
>
> Ich glaub das ist nicht mehr gesund.
>
> Viel Spaß noch!

Mit der Antwort bestätigst du bloß die Meinung der anderen User.

Aber auch dir vielen Spass an der frischen Luft, wird vielleicht auch 
dir gut tun.

Und benutz doch dieses Forum bitte nicht mehr wenn du nach ein paar 
Sätzen Kritik direkt die User beleidigen musst, die dir anfangs noch 
helfen wollten.

Bitte melde dich an um einen Beitrag zu schreiben. Anmeldung ist kostenlos und dauert nur eine Minute.
Bestehender Account
Schon ein Account bei Google/GoogleMail? Keine Anmeldung erforderlich!
Mit Google-Account einloggen
Noch kein Account? Hier anmelden.