SORU
12 Ocak 2010, Salı


Tam olarak nasıl ____özniteliği((yapıcı)) çalışıyorsun?

Bir şeyler kurmak gerekiyordu çok net belli oluyor.

  1. Ne zaman tam olarak çalışıyor mu?
  2. Neden iki tane parantez var?
  3. __attribute__ bir fonksiyonudur? Bir makro? Sözdizimi?
  4. Bu C çalışır? C ?
  5. Çalışma işlevi statik olması gerekiyor mu?
  6. __attribute__((destructor)) çalışıyor mu?

Example in Objective C:

__attribute__((constructor))
static void initialize_navigationBarImages() {
  navigationBarImages = [[NSMutableDictionary alloc] init];
}

__attribute__((destructor))
static void destroy_navigationBarImages() {
  [navigationBarImages release];
}

CEVAP
12 Ocak 2010, Salı


  1. Paylaşılan kitaplık, genellikle program başlangıç sırasında yüklenir.
  2. Tüm GCC nitelikler; muhtemelen işlev çağrıları onları ayırmak için nasıl.
  3. GCC-belirli bir sözdizimi.
  4. Evet.
  5. Hayır.
  6. Yıkıcı paylaşılan kitaplık, genellikle program çıkışında kaldırıldığında çalıştırın.

Yani, kurucular ve yıkıcılar çalışma paylaşımlı nesne dosyası özel bölümler içeren (.az ve .ELF üzerinde dtors) işlevleri yapıcı ve yıkıcı nitelikleri ile işaretlenmiş göndermeler içeren, sırasıyla. Kütüphane yüklendiğinde/dinamik yükleyici programı (ld.kaldırılmış böyle bölümler var olup olmadığını ve eğer öyleyse, öyle veya somesuch) denetler fonksiyonlar orada başvurulan çağırır.

Düşünsene, aynı kodu eğer kullanıcı ya da bağlantı statik dinamik seçerse başlangıç/kapatma ne olursa olsun çalıştırmak böylece muhtemelen normal statik linker bazı benzer bir sihir var.

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

YORUMLAR

SPONSOR VİDEO

Rastgele Yazarlar

  • Anthony Cumia

    Anthony Cumi

    5 EYLÜL 2006
  • pain975

    pain975

    27 NİSAN 2008
  • steven johns

    steven johns

    11 Mart 2011