Forum: Compiler & IDEs Variablenübertragung


von UJ (Gast)


Lesenswert?

Hallo zusammen.
Folgene situation:

In meinem AVR Projekt habe ich eine C-Datei. In der steht eine Funktion:
1
#include <avr/io.h>
2
3
void Abfrage(){
4
5
  if(Eingang1){
6
     x=1;
7
  }
8
  else if(Eingang2){
9
     x=2;
10
  }
11
  else{
12
  x=0;
13
  }
14
}
jedoch will ich aber in einer anderen C-Datei nach x fragen. (in meiner 
main)

wie schreibt man das am besten.? was muss man beachten.?
PS: die C-Datei, in der die Funktion Abfrage steht, binde ich auch durch 
ihre Include-Datei mit ein.

Danke euch
MfG

von Detlef K. (adenin)


Lesenswert?

erste Datei
Du hast x nirgendwo deklariert, also nehme ich mal integer.
1
#include <avr/io.h>
2
3
int x;
4
5
void Abfrage(){
6
  if(Eingang1){
7
     x=1;
8
  }
9
  else if(Eingang2){
10
     x=2;
11
  }
12
  else{
13
  x=0;
14
  }
15
}

zweite Datei
1
#include <avr/io.h>
2
3
extern int x;
4
5
void mach_irgendwas(){
6
 x=x*2;
7
}

von UJ (Gast)


Lesenswert?

vielen dank :)

von UJ (Gast)


Lesenswert?

in der ersten c-datei entsteht ne fehlermeldung:

multiple definition of `x'

was ist falsch daran.?
1
#include <avr/io.h>
2
#include <util/delay.h>
3
#include "mydefs.h"
4
#include "own.h"
5
6
int x = 0;
7
void Abfrage (){
8
  
9
  if ( (PIN_EINGANG & (1<<P_EINGANG0)) ) {
10
    x=1;
11
  }
12
  else if ( (PIN_EINGANG & (1<<P_EINGANG1)) ) {
13
    x=2;
14
  }
15
  else{
16
    x=0;
17
  }
18
  
19
}

von Amateur (Gast)


Lesenswert?

Wahrscheinlich hat der Compiler Recht.

"x" ist ein so fantasiereicher Name, dass er bestimmt nirgendwo anders 
verwendet wird. Auch nicht in main.

von Arno (Gast)


Lesenswert?

Meine Glaskugel sagt: Du hast x auch schon in mydefs.h oder own.h 
definiert.

MfG, Arno

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.