Şimdi Ara

C de bir string in uzunluk değerine göre error verdirme

Daha Fazla
Bu Konudaki Kullanıcılar: Daha Az
2 Misafir (1 Mobil) - 1 Masaüstü1 Mobil
5 sn
7
Cevap
0
Favori
700
Tıklama
Daha Fazla
İstatistik
  • Konu İstatistikleri Yükleniyor
0 oy
Öne Çıkar
Sayfa: 1
Giriş
Mesaj
  • C de bir string in uzunluk değerine göre program derlenirken hata "error" verdirme yapmak istiyorum.Aşağıdaki gibi bir yapı kullandım ama çalışmıyor.

     
    #include <stdio.h>
    #include <string.h>

    char Number[16]="123456789ABCDEFG";

    #if (uzunluk!=16)
    #error NUMBER 16 HANE DEĞİL
    #endif

    #define uzunluk sizeof(Number)


    void main(void)
    {
    printf("Merhaba Dunya");
    }



  • neden define kullandın ki ?
  • Ne kullanmam gerekiyor?
  • Nette aşağıdaki gibi örnekler çok var, ama bunlarda çalışmıyor.
    Amacım Number dizisi 16 byte'tan farklı ise derleyici hata versin.

     
    #if (sizeof ( int ) == 2 )
    #define MAKINA “16 bitlik isletim sistemi”
    #Else
    #define MAKINA “32 bitlik isletim sistemi”
    #Endif



    < Bu mesaj bu kişi tarafından değiştirildi asttekin -- 1 Mayıs 2014; 11:18:37 >
  • bu kodda hatalı çünkü derleyici sizeof'u bulamadığından yakınır ve hata verir ön işlemci ve makrolara.
    Şu konu belki işineze yarayabir:http://stackoverflow.com/questions/4079243/how-can-i-use-sizeof-in-a-preprocessor-macro ingilizcem olmadığından pek anlamadım ama .d

    < Bu ileti mini sürüm kullanılarak atıldı >
  • quote:

    Orijinalden alıntı: lavara123

    bu kodda hatalı çünkü derleyici sizeof'u bulamadığından yakınır ve hata verir ön işlemci ve makrolara.
    Şu konu belki işineze yarayabir:http://stackoverflow.com/questions/4079243/how-can-i-use-sizeof-in-a-preprocessor-macro ingilizcem olmadığından pek anlamadım ama .d

    Evet verdiğin bağlantıda yanıtını veriyor. Biz kullanmadığımız için aklımıza gelmiyor böyle şeyler. C11 ile static_assert gelmiş, gcc ile kullanmak için -std=c11 dahil edilmeli.

     
    #include <stdio.h>
    #include <assert.h>

    const char Number[]="123456789ABCDEF";

    int main()
    {
    static_assert(sizeof(Number) == 17, "NUMBER 16 HANE DEGIL");

    printf("Merhaba Dunya\n");
    return 0;
    }




  • quote:

    Orijinalden alıntı: elektro_gadget

    quote:

    Orijinalden alıntı: lavara123

    bu kodda hatalı çünkü derleyici sizeof'u bulamadığından yakınır ve hata verir ön işlemci ve makrolara.
    Şu konu belki işineze yarayabir:http://stackoverflow.com/questions/4079243/how-can-i-use-sizeof-in-a-preprocessor-macro ingilizcem olmadığından pek anlamadım ama .d

    Evet verdiğin bağlantıda yanıtını veriyor. Biz kullanmadığımız için aklımıza gelmiyor böyle şeyler. C11 ile static_assert gelmiş, gcc ile kullanmak için -std=c11 dahil edilmeli.

     
    #include <stdio.h>
    #include <assert.h>

    const char Number[]="123456789ABCDEF";

    int main()
    {
    static_assert(sizeof(Number) == 17, "NUMBER 16 HANE DEGIL");

    printf("Merhaba Dunya\n");
    return 0;
    }



    Teşekkürler, c11 destekleyen derleyicilerde çalışıyor.




  • 
Sayfa: 1
- x
Bildirim
mesajınız kopyalandı (ctrl+v) yapıştırmak istediğiniz yere yapıştırabilirsiniz.