Error: undeclared (first use in this function)

OP #2715687
Lesenswert?
• ▲
▼
Beim Compilieren erhalte ich folgende Fehlermeldung:

Error: 'SMBvariables' undeclared (first use in this function)

kann mir Jemand weiterhelfen?

Hier der Sourcecode:
1
-----------------------------------------------------------------------
2
SMBSlave.h
3
-----------------------------------------------------------------------
4
.....
5
#define SMBvariables SV.SMBvar
6
#define SMBvar_int   SV.SMBint
7

8
#ifndef MODULE_SMBUS
9
  union { volatile unsigned char SMBvar[29][2]; volatile unsigned int SMBint[29]; } SV;
10

11
char str_MfrName[]    PROGMEM = "\014Atmel Norway"; //__flash char
12
char str_DeviceName[] PROGMEM = "\005SB100";
13
char str_DeviceChem[] PROGMEM = "\004LION";
14
char str_MfrData[]    PROGMEM = "\013MfrDataArea";
15
#else
16
  extern union { volatile unsigned char SMBvar[29][2]; volatile unsigned int SMBint[29]; } SV;
17
#endif
18
.......
1
-----------------------------------------------------------------------
2
communication.c 
3
-----------------------------------------------------------------------
4
#include <avr/interrupt.h> 
5
#include "SMBSlave.h"
6
.....
7

8
ISR(TWIBUSCD_vect)
9
{
10
  //clear bits per sbdat110, 4.4.2
11
  SMBvariables[SMBV_BattMode][hibyte] &= ~(0xE3);  
12
  
13
  if(TWBCSR & (1<<TWBCIP))  //this int was caused by bus DISCONNECT event.
14
  {
15
    TWBCSR &= ~(1<<TWBCIP);
16
//SH    ChangePowerMode(POWERMODE_IDLE,0);
17
  }
18
  else  //this int occurred due to a bus CONNECT event.
19
  {
20
    TWBCSR |= (1<<TWBCIP);
21
//SH    ChangePowerMode(POWERMODE_ACTIVE,0); 
22
  }
23
}
24
..
25
/////////////////////////////////////////////////////////////////////
#2715752
Lesenswert?
• ▲
▼
a) Vergiss das Getrickse.
Wenn Du auf SV.SMBvar zugreifen willst, dann schreib auch SV.SMBvar hin

b) Vergiss das Getrickse mit dem #ifndef MODULE_SMBUS
In das Header File gehören nur die Deklarationen mit extern.
In die C-File gehören die Definitionen (die ohne extern) und das 
Header-File wird zur Kontrolle mit eingebunden.
#2715784
Lesenswert?
• ▲
▼
ABgesehen davon.
Das Problem wird mal wieder in den ... Teilen stecken.
Ein falsches #define, ein paar #ifdef und schon wird der #define auf den 
du hier aus bist, nicht mehr ausgeführt.

Bei solchen Sachen gibt es viele Möglichkeiten. Daher ist es in den 
meisten Fällen nicht sinnvoll, Codeausschnitte zu posten, in denen du 
selber keinen Fehler siehst. Denn wir sehen da auch nicht das Problem.

Antwort schreiben

Hinweis: der ursprüngliche Beitrag ist mehr als 6 Monate alt. Bitte hier nur auf die ursprüngliche Frage antworten, für neue Fragen einen neuen Beitrag erstellen.

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.