SORU
18 EKİM 2012, PERŞEMBE


Ve hukuki hata C?

Başına 7.5,

değeri birkaç kütüphane fonksiyonları tarafından olumlu hata numarası olarak ayarlanmıştır. [hata] değiştirilebilir bir lvalue175 genişler) bu tip int, Hata bir makro veya bir tanımlayıcı dış bağlantı ile bildirilmiş olup olmadığı belirtilmemiş. Bir makro tanımı gerçek bir nesne erişmek için bastırılmış, ya da bir programın adı bu hata ile bir tanımlayıcı tanımlar, davranışı tanımsızdır.

175) makro hata nesnesinin tanımlayıcı olması gerekmez. Değiştirilebilir bir lvalue bir işlev çağrısı sonucunda genişletmek olabilir (örneğin, *hata()).

Bu errno kısıtlama ihlali olmasını gerektirir için yeterli olup olmadığı açık değil. C dili vardır lvalues (gibi kayıt-depolama-sınıf değişkenleri; ancak bu sadece otomatik errno değil, tanımlandığı gibi) için olan & operatör kısıtlaması ihlali.

&errno yasal C ise, sabit olmak için gerekli midir?

CEVAP
18 EKİM 2012, PERŞEMBE


§6.5.3.2p1 belirtir

İşlenen tekli ve işleticisi olacak ya da bir fonksiyon göstergesi, sonucu [] veya tekli * operatör, veya bir lvalue belirtir bir nesne değil, bir bit alanı ve bildirilmedi ile register Depolama sınıfı belirteci.

Hangi Bendüşünüyorum&lvalue Bu iki kategoride olmayan herhangi bir lvalue için iyi olduğu anlamına alınabilir. Ve sana söz, errno olamaz ilan ile register Depolama sınıfı belirteci, ve bence (her ne kadar ben takip başvurular için Çek) olamaz var bir bit bu tür düzint.

Spec &(errno) C. yasal olması gerektiğini düşünüyorum

Ve yasal C hata, sabit olmak için gerekli midir?

Anlıyorum, kısmen noktası sağlayan, errno bir makro (ve bu sebepten, örneğin abone olarak giriş) için izin için bir başvuru için iş parçacığı yerel depolama bu durumda, o-ecek kesinlikle sabit konuları arasında. Ve sürekli olmalı beklemek için herhangi bir neden göremiyorum. Sürece değeri errno korur semantiği belirtilen görüyorum hiçbir neden sapık bir C kütüphanesi değil değiştirmek &errno başvurmak için farklı bellek adresleri üzerinden ders programı -- örneğin tarafından boşaltma ve yeniden desteğini her zaman set errno.

Son N hata değerleri kütüphane tarafından belirlenen halka bir tampon uygulayarak ve &errno her zaman en son nokta hayal edin. Özellikle yararlı olacağını sanmıyorum, ama spec aykırı herhangi bir yol göremiyorum.

Bunu Paylaş:
  • Google+
  • E-Posta
Etiketler:

YORUMLAR

SPONSOR VİDEO

Rastgele Yazarlar

  • BruBearBaby

    BruBearBaby

    25 Ocak 2011
  • MrRandomSong

    MrRandomSong

    29 Kasım 2009
  • undrmyumbrellaa

    undrmyumbrel

    25 Temmuz 2012