SORU
8 Aralık 2010, ÇARŞAMBA


' __GÜZEL_FONKSİYON__, __arasındaki fark ne İŞLEV__, __işlev__?

, *, *3__PRETTY_FUNCTION____FUNCTION__, arasındaki fark nedir ve nerede belgelenmiştir? Nasıl kullanmak için hangi karar?

CEVAP
8 Aralık 2010, ÇARŞAMBA


__func__ karakter dizisi değişkeni bir fonksiyon içinde kullanıldığında işlev adını içeren genişleten örtülü olarak bildirilen bir tanımlayıcı. C99 C eklenmiştir. C99 §6.4.2.2/1: gelen

Tanımlayıcı __func__ örtülü olarak çevirmen tarafından ilan edilir, açılışı takip hemen her fonksiyon tanımı brace, Bildirgesi

static const char __func__[] = "function-name";

-fonksiyon adı nereden çıktı, lexically kapsayan işlev adıdır. Bu adı işlevi süssüz adıdır.

Bir makro değil ve önişleme sırasında özel bir anlamı olduğunu unutmayın.

__func__ C içeren olarak belirtilen yerde 11, C eklendi "uygulama tanımlı bir dize" (C 11 §8.4.1[malzeme.fct.def.genel] 8/), C. belirtimi (C __func__ eklemek için orijinal önerisi N1642) kadar kullanışlı değildir.

__FUNCTION__ ön standart uzantısı bazı C derleyicileri desteği (dahil gcc ve C ); genel olarak kullanmalısın __func__ nerede desteklenen ve tek kullanım __FUNCTION__ kullanıyorsanız, derleyici bunu desteklemiyor (örneğin, Visual C , desteklemiyor C99 ve henüz destek tüm C 0 x sağlamaz __func__).

__PRETTY_FUNCTION__ çoğunlukla C fonksiyonları için "fonksiyonun adı fonksiyonun imza da dahil olmak üzere." güzel içerdiğini hariç __FUNCTION__, aynı gcc uzantısıdır Visual C (ama oldukça aynı değil) benzer bir uzantısı, __FUNCSIG__ vardır.

Standart olmayan makroları için, derleyici belgelerine bakın isteyeceksiniz. Uzantıları C compiler TechNet belgelerinde bulunan Görsel C "Predefined Macros". Gcc belgeleri uzantıları gcc belge sayfası "Function Names as Strings." açıklanmıştır

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

YORUMLAR

SPONSOR VİDEO

Rastgele Yazarlar

  • Apple&Tech Reviews & Giveaways

    Apple&Tech R

    12 Temmuz 2008
  • lilstevie89

    lilstevie89

    25 Mart 2011
  • Rachel Talbott

    Rachel Talbo

    26 Ocak 2011