www.mikrocontroller.net

Forum: GCC Error: undeclared (first use in this function)


Important announcement: there is an English version of this forum on EmbDev.net. Posts you create there will be displayed on Mikrocontroller.net and EmbDev.net.
Autor: Khaled G. (khaled_g)
Datum:

Diesen Beitrag bewerten:
lesenswert
nicht lesenswert
Beim Compilieren erhalte ich folgende Fehlermeldung:

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

kann mir Jemand weiterhelfen?

Hier der Sourcecode:
-----------------------------------------------------------------------
SMBSlave.h
-----------------------------------------------------------------------
.....
#define SMBvariables SV.SMBvar
#define SMBvar_int   SV.SMBint

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

char str_MfrName[]    PROGMEM = "\014Atmel Norway"; //__flash char
char str_DeviceName[] PROGMEM = "\005SB100";
char str_DeviceChem[] PROGMEM = "\004LION";
char str_MfrData[]    PROGMEM = "\013MfrDataArea";
#else
  extern union { volatile unsigned char SMBvar[29][2]; volatile unsigned int SMBint[29]; } SV;
#endif
.......
-----------------------------------------------------------------------
communication.c 
-----------------------------------------------------------------------
#include <avr/interrupt.h> 
#include "SMBSlave.h"
.....

ISR(TWIBUSCD_vect)
{
  //clear bits per sbdat110, 4.4.2
  SMBvariables[SMBV_BattMode][hibyte] &= ~(0xE3);  
  
  if(TWBCSR & (1<<TWBCIP))  //this int was caused by bus DISCONNECT event.
  {
    TWBCSR &= ~(1<<TWBCIP);
//SH    ChangePowerMode(POWERMODE_IDLE,0);
  }
  else  //this int occurred due to a bus CONNECT event.
  {
    TWBCSR |= (1<<TWBCIP);
//SH    ChangePowerMode(POWERMODE_ACTIVE,0); 
  }
}
..
/////////////////////////////////////////////////////////////////////

Autor: Tom M. (Gast)
Datum:

Diesen Beitrag bewerten:
lesenswert
nicht lesenswert
Khaled G. schrieb:
> Error: 'SMBvariables' undeclared (first use in this function)
>
> kann mir Jemand weiterhelfen?

Ja, Du selbst. Was bedeutet die Fehlermeldung?

Autor: Klaus Falser (kfalser)
Datum:

Diesen Beitrag bewerten:
lesenswert
nicht 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.

Autor: Karl Heinz Buchegger (kbuchegg) (Moderator)
Datum:

Diesen Beitrag bewerten:
lesenswert
nicht 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.

Autor: Khaled G. (khaled_g)
Datum:
Angehängte Dateien:

Diesen Beitrag bewerten:
lesenswert
nicht lesenswert
Danke für die Antworten.

a) Vergiss das Getrickse.
Wenn Du auf SV.SMBvar zugreifen willst, dann schreib auch SV.SMBvar hin

das ist eine gute Idee.

Im Anhang befindet sich der complete Code

Autor: Andreas B. (andreas_b77)
Datum:

Diesen Beitrag bewerten:
lesenswert
nicht lesenswert
In communication.c findet sich nirgends ein #include "SMBSlave.h".

Antwort schreiben

Die Angabe einer E-Mail-Adresse ist freiwillig. Wenn Sie automatisch per E-Mail über Antworten auf Ihren Beitrag informiert werden möchten, melden Sie sich bitte an.

Wichtige Regeln - erst lesen, dann posten!

  • Groß- und Kleinschreibung verwenden
  • Längeren Sourcecode nicht im Text einfügen, sondern als Dateianhang

Formatierung (mehr Informationen...)

  • [c]C-Code[/c]
  • [avrasm]AVR-Assembler-Code[/avrasm]
  • [code]Code in anderen Sprachen, ASCII-Zeichnungen[/code]
  • [math]Formel in LaTeX-Syntax[/math]
  • [[Titel]] - Link zu Artikel




Bitte das JPG-Format nur für Fotos und Scans verwenden!
Zeichnungen und Screenshots im PNG- oder GIF-Format hochladen.
Siehe Bildformate
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.

Mit dem Abschicken erkennst du die Nutzungsbedingungen an.

webmaster@mikrocontroller.netImpressumNutzungsbedingungenWerbung auf Mikrocontroller.net