Kullanilmayan degiskenleri yoruma almak
  • arduino ustunde cok az hafiza kaldigi icin projemdeki ozellikleri

    #define OZELLIK 0

    int degisken = 1;

    if(OZELLIK)
    {
    // ozellik icin tanimlanmis bir suru kod
    degisken = 5;
    }

    seklinde kullanmadigim kisimlari kapatabiliyorum

    simdi ben bunu yapinca oradaki kodlar kullanilmadigi icin derleyici gormuyor ve arduino ustundeki alani geri kazanabiliyorum

    peki o alana ozgu tanimladigim degiskenleri yoruma almak icin ne yapmam gerek? degiskeni kodun icinde kullanamsam bile derleyici arduino icinde yer kapliyor

    ...

    denedigim seyler:

    ...

    #ifdef OZELLIK 1
    int degisken = 1;
    #endif

    ve

    #if OZELLIK == 1
    int degisken = 1;
    #endif

    ilkinde 1 sayisini okumadi, 1 veya 0 olsun olmasin degisken tanimi oluyordu, nedeni sadece OZELLIK yazisini gormesi, OZELLIK icine ne tanimlanmis kontrol etmiyor

    ikincisinde

    #define OZELLIK 0

    #if OZELLIK == 1
    int degisken = 1;
    #endif

    if(OZELLIK)
    {
    // ozellik icin tanimlanmis bir suru kod
    degisken = 5;
    }

    seklinde kullandigimda arduino ide `degisken tanimlanmamis` diyerek hata veriyor
  • Kullanmıyorsan sil gitsin...birde böyle deneyin..
  • projede 20 den fazla ozellik var, bu 20 ozellik proje icinde tek bir bolgede degil, bunun yaninda ozellikler icin tanimlanmis yuzlerce degisken var, kullanmadigim bir ozelligi kod icinde 5-10 farkli yerde yoruma almakla ugrasmak yerine belirttigim gibi #define kullaniyorum, ancak degiskenler hala arduinonun hafizasini kullaniyor, #define ile pasif hale getirilen kod parcasindaki degiskenleri yoruma alamiyorum

    kullanmadigim degiskenler yer kapliyor mu ogrenmek icin kod icinde hic kullanmadigim sadece tanimladigim String veri tipinde bir kac tane degisken olusturdum. onceden soyledigim gibi, kod icinde degisken kullanilmadigi halde yer kapliyor. eger bir fonksiyon veya en basit haliyle bir kod parcasi #define gibi yontemlerle pasif haldeyse arduino icinde yer kaplamiyor. degiskenin yer kaplamasi ve pasif hale gelince hata vermesi sacmalik

    diger dillerde diger derleyiciler nasil bir yontem izliyor bilmiyorum, bana cok sacma geldi, bence ide'de ki bir mantik hatasi bile olabilir
  • Hata değil, #if #endif komutları derleyici içindir. derleyme sırasıdna bu koşullar kontrol edilerek ona göre bir çıktı oluşturup işlemciye yollar. Geride kalan kodda ise yazdığınız her kod parçacığını mantıksal açıdan değerlendirmek zorundadır. Bu durumda değişken isimli değerinizi bulamadığı için hata vermesi normaldir.

    #if OZELLIK == 1
    if(OZELLIK)
    {
    // ozellik icin tanimlanmis bir suru kod
    degisken = 5;
    }
    #endif

    şeklinde kullanırsanız sorun çıkmayacaktır. Derleme sırasında derleyici koşulu kontrol edecek, OZELLIK 1 tanımlanmamışsa altında kod bloğunu derleme işlemine katmayacaktır.
  • tesekkur ederim

Howdy, Stranger!

It looks like you're new here. If you want to get involved, click one of these buttons!

Login with Facebook
Açık kaynak kültürü gereği, çözdüğünüz problemlerin çözümlerini paylaşmayı lütfen unutmayın.