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

Eine eigene Frage? Dieser Thread ist über 4 Jahre alt. Stell sie in einem eigenen Thread – dort lesen mehr Leute mit, und sie wird öfter und schneller beantwortet.

Neuen Thread starten

Eine Lösung, Ergänzung oder Rückmeldung zu diesem Thread? Dann antworte hier.

Formatierung
  • [c]C-Code[/c]
  • [code]Code in anderen Sprachen, ASCII-Zeichnungen[/code]
  • [math]Formel in LaTeX-Syntax[/math]
  • [[Titel]] – Link zu einem Artikel
  • Verweis auf einen anderen Beitrag: Rechtsklick auf dessen Beitrags-ID (#8078628), „Adresse kopieren“, in den Text einfügen

Mehr zur Formatierung

Längeren Sourcecode als Anhang, nicht in den Text. JPG nur für Fotos und Scans; Zeichnungen und Screenshots als PNG oder GIF. Siehe Bildformate.

Schon registriert? Anmelden

Wird nicht angezeigt. Wir schicken dir einen Link; sobald du damit bestätigst, erscheint dein Beitrag.

Mit dem Abschicken legst du einen kostenlosen Account an und erkennst die Nutzungsbedingungen und die Datenschutzerklärung an.