Forum: Mikrocontroller und Digitale Elektronik Compilerfehler - unerklärlich :-(


von Hanna (Gast)


Lesenswert?

Guten Morgen zusammen,
ich bin schier am verzweifeln.

Ich habe in einer Main eine Subroutine mittels include bekannt gemacht. 
Eigentlich alles so wie ich es schon 100 mal in AnsiC gemacht habe, ABER 
er sagt mit "implicit declaration..." Dabei MÜSSTE sie doch 
ordnungsgemäß bekannt gemacht sein. Ich verzweifele echt.

Hat jemand von euch eine Idee? Was mache ich falsch



Meine Main:
1
#define MAIN
2
3
/* Includes ------------------------------------------------------------------*/
4
#include "main.h"
5
#include "usb_device.h"
6
#include "globals.h"
7
#include "Sub_USB.h"
8
#include <stdbool.h>
9
#include <math.h>
10
#include <stdio.h>
11
#include "globals.h"
12
#include "Sub_Display.h"
13
#include "Sub_Errors.h"
14
#include "Sub_Frequenzumrichter.h"
15
#include "Sub_Safety.h"
16
#include "string.h"
17
#include "Sub_Allgemein.h"
18
19
20
/**
21
  * @brief  The application entry point.
22
  * @retval int
23
  */
24
int main(void)
25
{
26
  /* MCU Configuration--------------------------------------------------------*/
27
28
  
29
30
   writeParameter();
31
32
  I2C_EE_ReadSetup(&Prozessdaten, &Parameter, &InstEEPROMI2C, 0);
33
  I2C_EE_ReadBSZ(&Prozessdaten, &Parameter, &InstEEPROMI2C, 10);
34
35
36
  I2C_EXP_WriteConf(&Prozessdaten, &Parameter, &InstEXTI2C);
37
  HAL_Delay(100);
38
  I2C_EXP_ReadConf(&Prozessdaten, &Parameter, &InstEXTI2C);
39
40
41
42
  I2C_EXP_WriteOutput(&Prozessdaten, &Parameter, &InstEXTI2C, false);
43
  I2C_EXP_WriteOutput(&Prozessdaten, &Parameter, &InstEXTI2C, true);
44
45
  I2C_EXP_ReadInput(&Prozessdaten, &Parameter, &InstEXTI2C);
46
47
48
      
49
  while (1)
50
  {
51
52
      /*+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
53
      ZYKLUSRICHTIGES EINLESEN DER BEDIENTASTER und der Zustände des I2C-Expanders
54
      /+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++*/
55
      Status.ALG.T_Start  = IN_T_Start;
56
      Status.ALG.T_Stop   = IN_T_Stop;
57
      Status.ALG.T_Plus   = IN_T_Plus;
58
      Status.ALG.T_Minus  = IN_T_Minus;
59
      Status.ALG.T_Time   = IN_T_SpeedTime;
60
      Status.ALG.T_Tool   = IN_T_Toolchange;
61
62
      if ((Status.SAF.I2CEXT_Auslesen_Timeout == 0) && (Prozessdaten.SAF.Funnel_exists))
63
      {
64
        Status.SAF.I2CEXT_Auslesen_Timeout = 250;
65
        I2C_EXP_ReadInput(&Prozessdaten, &Parameter, &InstEXTI2C);
66
      }
67
}




meine Headerdatei:
1
#ifndef SUB_ALLGEMEIN_H
2
#define SUB_ALLGEMEIN_H
3
#include "globals.h"
4
5
void writeParameter(void);
6
void I2C_Restart(void);
7
void I2C_EE_PageRead(u8 page);
8
void I2C_EE_PageWrite(u8 page);
9
void I2C_EE_WriteSetup(struct s_Prozessdaten *Prozessd, struct s_Parameter *Param,  struct s_InstEEPROMI2C *Inst, u8 EEPROMPage);
10
void I2C_EE_ReadSetup(struct s_Prozessdaten *Prozessdaten, struct s_Parameter *Parameter,  struct s_InstEEPROMI2C *Inst, u8 EEPROMPage);
11
void I2C_EE_WriteBSZ(struct s_Prozessdaten *Prozessdaten, struct s_Parameter *Parameter,  struct s_InstEEPROMI2C *Inst, u8 EEPROMPage);
12
void I2C_EE_ReadBSZ(struct s_Prozessdaten *Prozessdaten, struct s_Parameter *Parameter,  struct s_InstEEPROMI2C *Inst, u8 EEPROMPage);
13
void I2C_EXP_WriteConf(struct s_Prozessdaten *Prozessd, struct s_Parameter *Param, struct s_EXTI2C *Inst);
14
void I2C_EXP_ReadConf(struct s_Prozessdaten *Prozessd, struct s_Parameter *Param, struct s_EXTI2C *Inst);
15
void I2C_EXP_WriteOutput(struct s_Prozessdaten *Prozessd, struct s_Parameter *Param, struct s_EXTI2C *Inst, bool Logic);
16
void I2C_EXP_ReadInput(struct s_Prozessdaten *Prozessd, struct s_Parameter *Param, struct s_EXTI2C *Inst);
17
#endif /* SUB_ALLGEMEIN_H_INCLUDED */











Warum sagt er dann, dass die Funktion nicht deklariert ist?

von Εrnst B. (ernst)


Lesenswert?

Hanna schrieb:
> Ich habe in einer Main eine Subroutine mittels include bekannt gemacht.

Welche?

HAL_Delay z.B. in dem Code, den du gezeigt hast, nicht.

IAW: Zeig die Compiler-Fehlermeldung.

Beitrag #6997477 wurde vom Autor gelöscht.
von Torsten R. (Firma: Torrox.de) (torstenrobitzki)


Lesenswert?

Hanna schrieb:
> Warum sagt er dann, dass die Funktion nicht deklariert ist?

Ja, was sagt er den? Ich habe die komplette Fehlermeldung des 
Compilers nirgendwo gefunden.

Ansonsten: die Datei einmal mit dem Schalter zur Erzeugung des 
Preprozessor-Outputs übersetzen und den Preprozessor-Output dann mit den 
eigenen Erwartungen abgleichen.

von Programmierer (Gast)


Lesenswert?

Hanna schrieb:
> Eigentlich alles so wie ich es schon 100 mal in AnsiC gemacht habe

Das ist kein Ansi-C, <stdbool.h> gibt es erst seit C99.

von Peter D. (peda)


Lesenswert?

Oh Gott, wieder so ein Schnipselcheneinfüger. Damit kann keiner was 
anfangen.

Hanna schrieb:
> Warum sagt er dann, dass die Funktion nicht deklariert ist?

Welche und wo?
Häng das komplette Projekt an und poste die erste Fehlermeldung im 
exakten Wortlaut.

von A. S. (Gast)


Lesenswert?

Hanna schrieb:
> Ich habe in einer Main eine Subroutine mittels include bekannt gemacht.
> Eigentlich alles so wie ich es schon 100 mal in AnsiC gemacht habe, ABER
> er sagt mit "implicit declaration

Das Wort, dass der Compiler anmeckert (oder das Wort davor) ist in der 
Zeile im File noch nicht bekannt. Oder ein fehlendes , ; oder so bringt 
den Programmfluss durcheinander.

Schreibfehler? Ein define fehlt um header(-Teile) zu inkludieren? Es 
gibt mehrere Header-Dateien und er nimmt die falsche?

Egal. Mit der Wortsuche Tippfehler des Namens ausschließen

Über der vermuteten Deklaration im Header ein define QWERTZU einfügen 
und QWERTZU über der Fehlerzeile schreiben.

Den Fehleroutput Posten. Vom Beginn bis zur nächsten Meldung hinter 
deiner Fehler-Zeile

von Hartmut S. (hsemken)


Lesenswert?

Hanna schrieb:

> Warum sagt er dann, dass die Funktion nicht deklariert ist?

Ich tippe mal auf HAL_Delay(), aber der Compilter sagt das auch.
Und falls er das nicht sagt: einfach mal alle Zeilen bis auf eine 
auskommentieren und sehen, welche den Fehler auslöst.

hase

von Lothar M. (Firma: Titel) (lkmiller) (Moderator) Benutzerseite


Lesenswert?

Hanna schrieb:
> (&Prozessdaten, &Parameter, &InstEXTI2C);
Brauchts da die vielen &?

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.