Global değişken kullanımı Keil ARM

Başlatan camby, 08 Nisan 2013, 12:40:12

camby

Basit bir yerde takıldım ,

main.c içinde tanımladığım değişkenler , stm32f4_it.c içerisinde tanınmıyor. Değişken tanımlarını main.h içine de yazmayı denedim bu sefer de multiply defined hatası alıyorum , ne yapmam gerekiyor bu değişkenleri farklı yerlerde kullanabilmem için ?

..........
 *----------------------------------------------------------------------------*/

#include "main.h"

volatile unsigned short i;
volatile unsigned char Sinyal[100];

//====== Systick Init =========================================================
void Systick_Init(void)
{
	//STK_CTRL |= 0x00000001;   						// 1: Counter enabled 	
	SysTick_Config(SystemCoreClock/1000000); 	// 1us 
}//============================================================================

................

adem89

main içinde     int i;    şeklinde değişken tanımladığınızı varsayalım bunu stm32f4_it.c içinde kullanmak için stm32f4_it.c içinde      extern int i;       şeklinde tanımlayarak kullanabilirsiniz.

SpeedyX

f4_it.c içinde
extern volatile unsigned char Sinyal[100];
yaparak kullanabilirsin.

camby

teşekkürler.

extern komutunu daha önceden image array çekmek için kullanmıştım ancak demek global değişken kullanımı için de gerekiyormuş.

KABO

bir c dosyasında tanımladıgın global degişkeni başka bir ce dosyasında tanımlaman için extern ifadesini kullanmalısın. extern ifadesi degişkenin başka bir form içerisinde tanımlandıgına dair bilgi verir.   ornegin: Main.c de danımladıgın "int i;" degişkeninin baska bir  Deneme.c  içerisinde kullanabilmen için "extern int i; "olarak deneme.c içerisinde belirtmen lazım. eger header içerisine "extern int i;" olarak tanımlarsan multiply tanımlama hatasını vermez. umarım yardımcı olabilmişimdir.
BILGI PAYLASTIKCA COGALIR...

muhittin_kaplan

extern derken
DIŞARIYA değil DIŞARDAN alacağım anlamına geliyor değil mi ?

camby

evet hocam dısarıdan yerıne kullanılıyor daha dogrusu ben o anlamı cıkartıyorum.

Cunku baska yerde tanımlı.

KABO

C dosyası içerisinde kullanılan bir global degişkeni başka bir c dosyası içerisinde kullanabilmek için extern komutu kullanılmaıdır.
BILGI PAYLASTIKCA COGALIR...