Compilerfehler - unerklärlich :-(

Gast #6997475
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?
Beitrag #6997477 wurde von einem Moderator gelöscht.
Gast #6998562
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

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