SORU
1 Mayıs 2014, PERŞEMBE


Neden otomatik bir=1; C derlemek?

Kod:

int main(void)
{
    auto a=1;
    return 0;
}

alır MS Visual Studio tarafından hataları dosya varsa 2012 derleyici olmadan derlenmiş .c uzantısı. Her zaman kullandığınız düşündüm .c uzantısı, derleme C sözdizimi göre değil, C olması gerekir . Dahası, bir tür olmadan otomatik bildiğim kadarıyla izin verilirsadeceC C beri bu tür başlatıcısı çıkarılabileceği anlamına gelir nerede 11.

Benim derleyici C yapışmasını olmadığını ifade ediyor mu, ya da kod aslında C-dili doğru mu?

CEVAP
1 Mayıs 2014, PERŞEMBE


auto anlamına gelen eski bir kelime C "yerel kapsam". auto a auto int a ve yerel bir kapsam değişkeni bir işlev içinde bildirilen varsayılan olduğundan, bu da bu örnekte int a aynı şey aynıdır.

Temel tipler vardı hiçbir yerde bu kelime aslında C selefi B bir artık, her şey int, int, intdizisi için işaretçi.(*) Beyan ya auto extrn [sic]. C "her şey" varsayılan bir kural, tamsayılar bildirebilirsiniz. int kalıtsal

auto a;
extern b;
static c;

ISO C kurtuldum, ama birçok Derleyiciler hala geriye uyumluluk için kabul. Eğer yabancı görünüyor ilgili bir kuralı iş başında olduğunu fark etmelisin

unsigned d;  // actually unsigned int

hala modern kod yaygındır.

C 11 tür kesmesi için herhangi bir C programcı orijinal anlamı ile kullanarak olsaydı kaç olan kelime,, yeniden. Bu çoğunlukla güvenli çünkü "her şey int" kuralı C vardı zaten düştü C 98; tek şey bu tatili auto T a, kimse kullanmış zaten. (**19, onun Stroustrup bir yerde bu yorum, ama tam referansı şu an bulamıyorum.)

(*) B dize işleme ilginçti: int dizileri kullanın ve her bir üye. birden fazla karakter paketi ... B aslında farklı bir sözdizimi ile BCPL.

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

YORUMLAR

SPONSOR VİDEO

Rastgele Yazarlar

  • Diogo Oliveira

    Diogo Olivei

    4 HAZİRAN 2006
  • skiesofblack.net

    skiesofblack

    14 HAZİRAN 2009
  • tinycammonitor

    tinycammonit

    14 Aralık 2010