SORU
14 EKİM 2012, Pazar


C ve C her ikisi içinde geçerli bir kod her dilde derlenmiş, farklı davranışlara neden olabilir?

C ve C çok fark var, ve geçerli bir C kodu C kodu geçerli değil.
("Geçerli" olarak tanımlanan davranışı ile standart kod, Yani uygulama-spesifik olmayan/tanımsız/etc.)

İçinde C ve C de kod geçerli bir parça üretecek herhangi bir senaryo varfarklıher dilde standart bir derleyici ile derlenmiş bir davranış mı?

Bu mantıklı/faydalı bir karşılaştırma yapmak için (pratikte bir şeyler öğrenmek, soru bariz boşluklar bulmaya çalışıyorum), farz edelim:

  • Hiçbir şey ile ilgili işleyişi #ifdef __cplusplus, parametreleri, vb. ile kesmek anlamına gelir)
  • Hiçbir uygulama tanımlı her iki dilde de aynı (örneğin sayısal sınırları, vb.)
  • Her standart için makul son sürümleri (örneğin, diyelim ki, C ve 98) C90 ya da geç karşılaştırıyoruz
    Eğer sürümleri olursa olsun, daha sonra farklı davranış üreten belirtiniz.

CEVAP
15 EKİM 2012, PAZARTESİ


Burada C ve C işlev çağrıları ve bildirimleri nesne arasındaki farkı avantaj olarak C bildirilmemiş fonksiyonların çağrılması sağlar gerçeğine götüren bir örnek:

#include <stdio.h>

struct f { };

int main() {
    f();
}

int f() {
    return printf("hello");
}

C bu f geçici oluşturulan ve yok olduğu için hiçbir şey yazdırılır, ama C fonksiyonları olduğu açıklandı olmadan çağrılabilir çünkü hello yazacaktır.

Merak ediyorsan eğer isim f kullanılan iki kez, C ve C standartları açıkça verir, ve bir nesne vardır demek struct f belirsizliği ortadan kaldırmak istiyorsanız, yapısı, ya da vazgeç struct Eğer istediğiniz işlevi.

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

YORUMLAR

SPONSOR VİDEO

Rastgele Yazarlar

  • Tips On Linux

    Tips On Linu

    26 Temmuz 2008
  • wwjoshdu

    wwjoshdu

    18 ŞUBAT 2011
  • YAN TV

    YAN TV

    20 EKİM 2011