folder Tahribat.com Forumları
linefolder C - C++
linefolder C - Global Struct Oluşturmak



C - Global Struct Oluşturmak

  1. KısayolKısayol reportŞikayet pmÖzel Mesaj
    iQsuz
    iQsuz's avatar
    Kayıt Tarihi: 21/Nisan/2008
    Erkek

    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
  2. KısayolKısayol reportŞikayet pmÖzel Mesaj
    rajooonn
    rajooonn's avatar
    Kayıt Tarihi: 16/Haziran/2010
    Erkek

    Kütüphane olarak ihtiva edildiğinde yeni bir değişken tanımlanması gerekiyor olabilir mi?


    Gece! Vampir değilim ama geceyi çok severim. Yalnızsın, oyun oynuyorsun monitörün ışığı ve kendin.
  3. KısayolKısayol reportŞikayet pmÖzel Mesaj
    niRvana_GG
    niRvana_GG's avatar
    Kayıt Tarihi: 01/Kasım/2012
    Erkek

    Softtimer.h yı include ettiğin satırı atabilir misin ?

     

    Edit : #include "SoftTimer.h" olarak gözükmüyordu şimdi düzeldi.

    niRvana_GG tarafından 04/Oca/16 20:33 tarihinde düzenlenmiştir
  4. KısayolKısayol reportŞikayet pmÖzel Mesaj
    niRvana_GG
    niRvana_GG's avatar
    Kayıt Tarihi: 01/Kasım/2012
    Erkek

    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
  5. KısayolKısayol reportŞikayet pmÖzel Mesaj
    Hunter
    j4x
    j4x's avatar
    Kayıt Tarihi: 16/Temmuz/2005
    Erkek

    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.


    The king is bleeding.
  6. KısayolKısayol reportŞikayet pmÖzel Mesaj
    iQsuz
    iQsuz's avatar
    Kayıt Tarihi: 21/Nisan/2008
    Erkek

    @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

     

     

    iQsuz tarafından 05/Oca/16 00:09 tarihinde düzenlenmiştir
Toplam Hit: 2029 Toplam Mesaj: 6
c struct global struct