SORU
29 Aralık 2008, PAZARTESİ


Çıkış arasındaki fark nedir() ve iptal()?

C ve C , exit() abort() arasındaki fark nedir? Bir hata (istisna değil) sonra programı bitirmek için çalışıyorum.

CEVAP
29 Aralık 2008, PAZARTESİ


abort() çıkar nesneleri çağırmadan önce fonksiyonları atexit() kullanarak kayıtlı çağırmadan ve' yıkıcılar. ilk programınız exit() Her iki program çıkmadan önce. Otomatik nesneler için yıkıcılar olsa çağırmaz. Bu yüzden

A a;
void test() { 
    static A b;
    A c;
    exit(0);
}

Will düzgün a b imha, ama c yıkıcılar arayacak. abort() de nesnelerin yıkıcı demez. Bu talihsiz bir durum olarak, C Standart düzgün sonlandırma sağlayan alternatif bir mekanizma açıklanır:

Otomatik depolama süresi ile nesneleri main() otomatik nesneleri içerir ve exit() çağrısı yürütür olan bir program yok. Doğrudan kumanda main() yakalanmış bir özel durum üretiliyor tarafından main() böyle bir transfer olabilir.

struct exit_exception { 
   int c; 
   exit_exception(int c):c(c) { } 
};

int main() {
    try {
        // put all code in here
    } catch(exit_exception& e) {
        exit(e.c);
    }
}

exit(), düzenlemek arama yerine bu kodu 18* *yerine.

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

YORUMLAR

SPONSOR VİDEO

Rastgele Yazarlar

  • Jonnyriddlin1

    Jonnyriddlin

    4 Ocak 2007
  • Schmittastic Jr.

    Schmittastic

    19 Mart 2013
  • TastyTuts | Creative video tutorials by Gareth David

    TastyTuts |

    6 Temmuz 2011