C ileri bir ilan numaralama
Aşağıdaki gibi bir şey yapmaya çalışıyorum:
enum E;
void Foo(E e);
enum E {A, B, C};
derleyici reddeder. Google'da hızlı bir göz attım ve uzlaşma gibi görünüyor "yapamazsın" neden anlayamıyorum ama. Kim açıklayabilir? Çok teşekkürler.
Açıklama 2: bunu ben yapıyorum gibi özel yöntemler bir sınıf al dedi numaralama ve istemiyorum numaralama değerleri maruz - yani, örneğin, ben istemiyorum herkes biliyor E olarak tanımlanır
enum E {
FUNCTIONALITY_NORMAL, FUNCTIONALITY_RESTRICTED, FUNCTIONALITY_FOR_PROJECT_X
}
proje X kullanıcılar hakkında bilmek istediğim bir şey değil gibi.
Yani, başlık dosyasında özel teknikler, numaralama içten cpp içinde bildirmek ve yerleşik kitaplık dosyası başlığı ve insanlara dağıtmak böylece ileri numaralama beyan etmek istedim.
Derleyici - GCC.
CEVAP
Numaralama ileriye ilan edilemez nedeni değerleri bilmeden, derleyici depolama numaralandırma değişkeni için gerekli olduğunu. C Derleyici gerçek depolama alanını belirlemek için tüm değerleri belirtilen içeren boyutu gerekli dayanarak verdi. Eğer görünen tüm ileri Bildirgesi, çeviri birimi depolama boyutu seçilmiştir yapacak bir şey yok - bir char veya int ya da başka bir şey olabilir.
ISO Bölüm 7.2.5 C Standart:
alttaki yazınbir numaralandırma tüm numaralandırma değerleri numaralandırma tanımlanan temsil eden bir tamsayı türü. Bu uygulama tanımlı olan bir tamsayı türü olarak kullanılır temel türü için bir numaralandırma dışında temel türü olamaz daha büyük
int
sürece değer bir kaptan olamaz uygun birint
unsigned int
. Eğernumaralandırıcısı listesiboş, alttaki yazarsanız numaralandırma değeri 0 ile tek bir sayacı vardı sanki.sizeof()
bir numaralandırma türü için uygulanan numaralandırma türü, ya da bir kaptan bir nesne, değerisizeof()
değeri temel türü için uygulanır.
Yanaarayanişlev parametreleri boyutları doğru çağrı yığını Kur bilmek gerekir, bir numaralandırma listesinde Listeleme sayısını işlevi prototip önce bilinmesi gerekir.
Güncelleme: M C 0 x bir sözdizimi numaralama türleri bildirmek için önerilmiş ve kabul edilmiştir. http://www.open-std.org/jtc1/sc22/wg21/docs/papers/2008/n2764.pdf teklifi görebilirsiniz
Ne kadar ileri bir şablon sınıf ilan e...
İç içe Java numaralama tanımı statik o...
Neden'ileri-ilan böyle bir ad ala...
Bir sınıf içinde ilan eden bir numaral...
İleri-ilan Python bir işlevi olması mü...