Verschachtelung-Tiefe? Begrenzung? C-Programmierung

OP #4227973
Lesenswert?

Hallo liebe Mikrocontroller Nutzer,

ich habe ein Problem mit meinem Quellcode (Programmiersprache C). Der 
Code wird in MPLAB geschrieben und soll für den Mikrocontroller 
dsPIC40F4011 sein.

Ich habe in meinem Quellcode in der main-Datei mehrere If-Abfragen in 
einer while-Schleife verschachtelt (Anzahl 4). Wenn ich jetzt der 
letzten if Abfrage die Prüfbedingung gebe, bekomme ich Fehler angezeigt.

if(abbruch_anforderung_merker == 1)
{
}
Jetzt wird der Compiler folgende Fehler:

build/default/production/Main.o(.text+0x18): In function `.LSM10':


: undefined reference to `_fehlerfall_merker'
Program Memory  [Origin = 0x100, Length = 0x7f00]

section                    address   length (PC units)   length (bytes) 
(dec)
-------                    -------   ----------------- 
--------------------
.text                        0x100                0xd8           0x144 
(324)
.text                        0x1d8               0xa6a           0xf9f 
(3999)
.dinit                       0xc42                 0x8             0xc 
(12)

                     Total program memory used (bytes):         0x10ef 
(4335) 8%


Data Memory  [Origin = 0x800, Length = 0x800]

section                    address      alignment gaps    total length 
(dec)
-------                    -------      -------------- 
-------------------
.nbss                        0x800                   0            0x4e 
(78)

                        Total data memory used (bytes):           0x4e 
(78) 3%


Dynamic Memory Usage

region                     address                      maximum length 
(dec)
------                     ------- 
---------------------
heap                             0                                   0 
(0)
stack                        0x84e                               0x7b2 
(1970)

                        Maximum dynamic memory (bytes):          0x7b2 
(1970)

make[2]: *** 
[dist/default/production/CAN_Communication.X.production.hex] Error 255
nbproject/Makefile-default.mk:207: recipe for target 
'dist/default/production/CAN_Communication.X.production.hex' failed
make[1]: *** [.build-conf] Error 2
make[2]: Leaving directory 
'C:/Users/uschlenk/MPLABXProjects/CAN_Communication.X/CAN_Communication. 
X'
make: *** [.build-impl] Error 2
nbproject/Makefile-default.mk:78: recipe for target '.build-conf' failed
make[1]: Leaving directory 
'C:/Users/uschlenk/MPLABXProjects/CAN_Communication.X/CAN_Communication. 
X'
nbproject/Makefile-impl.mk:39: recipe for target '.build-impl' failed

BUILD FAILED (exit value 2, total time: 3s)

Mit if(1) ... keine Fehler
Wodran liegt das bei der ersten IF-Abfrage bekam ich mit zwei 
Prüfbedingungen auch den Fehler mit einem wieder nicht. Liegt es an der 
Anzahl an Variablen?
Für mich ist das alles sehr mysteriös!

if(fehlerfall_merker != 1 /* && (mechanischer_stecker_merker != 1)*/)
(Mit den Kommentar kein Fehler, ohne Kommentar makierung Fehler wie 
oben.
Gast #4227996
Lesenswert?

Hi Uwe,
das war nichts. den Code bitte mit Tags versehen!!!!
Besser ein kleines komplettes Projekt, oder die C- und h-Files!

was sagt denn dein MPLAB zum Fehler 'recipe for target ' das hast doch 
3x mal drin???
OP #4228004
Lesenswert?

Ich habe die Variablen in einer Header Datei als Extern deklariert.
Funktioniert ja auch bei den anderen Variablen. So lange ich die letzte 
nicht dazu nehme.

    extern char fehlerfall_merker; // 0 kein Fehler vorhanden; 1 Fehler 
vorhanden.
    extern char ladewunsch_merker; // 0 nicht betriebsbereit; 1 
betriebsbereit.
    extern char stecker_merker; // 0 Stecker gezogen, 1 Stecker 
gesteckt.
    extern char mechanischer_stecker_merker; // 0 kein mechanischer 
Stecker gesteckt, 1 mechanischer Stecker gesteckt.
    extern char betriebsbereit_anzeige; // 0 Betriebsbereit, 1 nicht 
Betriebsbereit
    extern char abbruch_anforderung_merker; // 0 kein Abbruch erwünscht 
1 Abbruch erwünscht
Gast #4228009
Lesenswert?

Extern bedeutet: die gibt's in irgend einen der gelinkten o-Files (oder 
Biblioteken). Wenn die aber von dir ist, dann muß es ein c-File geben, 
in den die OHNE extern steht. Ein guter Kandidat wäre main.c

Antwort schreiben

Bitte melde dich an, um einen Beitrag zu schreiben.

oder

Mit Google-Account einloggen

Die Registrierung ist kostenlos und dauert nur eine Minute.

Jetzt registrieren