C - Global Struct Oluşturmak
-
merhaba beyler bayanlar.
çalıştığım bi projede global struct tanımlaması yapmam gerekiyor fakat yapamıyorum.
örnek olarak şu üç dosyam olsun diyelim.
SoftTimer.h
#ifndef SOFT_TIMER_H #define SOFT_TIMER_H void SoftTimer_Init(void); #endif
SoftTimer.c
#include SoftTimer.h typedef enum{ false, true }bool; typedef struct{ bool IsRunning; volatile bool TimeOut; uint32_t SetTime; uint32_t Time; }STimer_TypeDef; STimer_TypeDef SoftTimer; void SoftTimer_Init(void){ SoftTimer.IsRunning = false; }
main.c
#include "SoftTimer.h" int main(){ ...process SoftTimer.Time = 0; ...process }
main içindeki SoftTimer.Time tanımlamasında hata veriyor.
bu tip tanımlanmamış diyo neden?
structurelar ile ilgili bilmediğim veya kaçırdığım bişey mi var.
iQsuz tarafından 04/Oca/16 18:43 tarihinde düzenlenmiştir -
Kütüphane olarak ihtiva edildiğinde yeni bir değişken tanımlanması gerekiyor olabilir mi?
-
Softtimer.h yı include ettiğin satırı atabilir misin ?
Edit :
niRvana_GG tarafından 04/Oca/16 20:33 tarihinde düzenlenmiştir#include "SoftTimer.h" olarak gözükmüyordu şimdi düzeldi.
-
struct tanımını sen *.c dosyasında yapıyorsun o yüzden derleyici main.c için bu tanımı görmüyor. *.h dosyasında struct ve enum tanımlamasını yapman gerekiyor.
#ifndef SOFT_TIMER_H #define SOFT_TIMER_H typedef enum{ false, true }bool; typedef struct { bool IsRunning; volatile bool TimeOut; uint32_t SetTime; uint32_t Time; }STimer_TypeDef; void SoftTimer_Init(void); #endif
niRvana_GG tarafından 04/Oca/16 20:46 tarihinde düzenlenmiştir -
Hocam structure declarationlarının her source dosyasında olması gerekir. O structu kullandığın her dosyanın bu bilgiye erişmesi gerekir. Bunun içinde genelde header dosyalarına koyuyoruz o tür tanımları, kullanacağımız yerlerden include ediyoruz tekrar yapmamak için. Kısacası arkadaşın dediği gibi headera yazıp her iki dosyada da include edebilirsin.
-
@j4x @niRvana_GG
hocalar dediğinizi yaptım.
sanırım bizim compiler enumu struct içinde çağırmama kızıyor.
enum ifadesini söyle değiştirdim.sonra struct içine attım. kod şimdilik çalışıyo fakat hala struct içine enum implemen edebilmiş değilim.
typedef int bool; #define true 1 #define false 0