Picproje Elektronik Sitesi

PROGRAMLAMA DİLLERİ => C/C++ => Konuyu başlatan: XX_CİHAN_XX - 26 Mayıs 2018, 23:23:06

Başlık: C de bir enum list'in eleman sayısını nasıl hesaplarız?
Gönderen: XX_CİHAN_XX - 26 Mayıs 2018, 23:23:06
enum blah {
    FIRST = 7,
    SECOND = 15,
    THIRD = 9,
    LAST = 12
};
#define blahcount 4

Buradaki gibi blahcount ifadesinin tanımlanmasını bir makro ile otomatik yapabilir miyiz? Enum list sıralı artsa sorun yok ancak yukarıdaki gibi farklı değerler alan bir liste için soruyorum sorumu.
Başlık: Ynt: C de bir enum list'in eleman sayısını nasıl hesaplarız?
Gönderen: baran123 - 26 Mayıs 2018, 23:49:03
Enum şart değilse int dizisi kullanıp sizeof ile hesaplayabilirsiniz.
Enum için bildiğim kadarıyla böyle bir yapı yok.
Başlık: Ynt: C de bir enum list'in eleman sayısını nasıl hesaplarız?
Gönderen: XX_CİHAN_XX - 27 Mayıs 2018, 00:05:32
enum ile yapılıp yapılamayacağını merak ediyorum :)
Başlık: Ynt: C de bir enum list'in eleman sayısını nasıl hesaplarız?
Gönderen: mufitsozen - 27 Mayıs 2018, 11:42:24
Alıntı yapılan: XX_CİHAN_XX - 27 Mayıs 2018, 00:05:32enum ile yapılıp yapılamayacağını merak ediyorum :)
X-Macro ile yapilabilir.
Başlık: Ynt: C de bir enum list'in eleman sayısını nasıl hesaplarız?
Gönderen: foseydon - 28 Mayıs 2018, 09:25:40
tam emin değilim ama yapılmıyor olması lazım. ayrıca yapmamalısın da. hocam enum a bir tane daha eleman ekle, COUNT diye. enuma her eleman eklediğinde bunu da güncelle. zaten o enum a eleman eklemek için o dosyayı açıp yazacaksın, bir alt satırda ufak bir değişiklik yapmak bu kadar zor olmasa gerek.
Başlık: Ynt: C de bir enum list'in eleman sayısını nasıl hesaplarız?
Gönderen: Elektroemre - 28 Mayıs 2018, 10:14:42
Çok çirkin olmakla birlikte:

enum blah {
    __BLAH_START = __LINE__,
    FIRST = 7,
    SECOND = 15,
    THIRD = 9,
    LAST = 12
    __BLAH_END = __LINE__
};
#define blahcount (__BLAH_END  - __BLAH_START  - 1)
Başlık: Ynt: C de bir enum list'in eleman sayısını nasıl hesaplarız?
Gönderen: XX_CİHAN_XX - 28 Mayıs 2018, 20:51:30
Alıntı yapılan: Elektroemre - 28 Mayıs 2018, 10:14:42Çok çirkin olmakla birlikte:

enum blah {
    __BLAH_START = __LINE__,
    FIRST = 7,
    SECOND = 15,
    THIRD = 9,
    LAST = 12
    __BLAH_END = __LINE__
};
#define blahcount (__BLAH_END  - __BLAH_START  - 1)

__LINE__ direktifini bilmiyordum, güzelmiş. IAR'ın derleyicisinde çalışır mı bilmiyorum ama deneyeceğim.
Başlık: Ynt: C de bir enum list'in eleman sayısını nasıl hesaplarız?
Gönderen: Burak B - 01 Haziran 2018, 03:52:51
Modern derleyicilerin hemen hepsinde çalışır. __LINE__, __FILE__, __DATE__, __TIME__ v.b. "Standard Predefined Macro" tanımına giren standartlaşmış C derleyici makroları zaten. Hata bildirim, ayıklama ve sürümleme gibi işlemlerde çok yaygın kullanılırlar.

Örneğin;

printf ("HATA: "
            "Dosya %s, satır %d.
            "Dizi indeksi olması gereken sınırların dışında ! (%d)\n",
            __FILE__, __LINE__, len);