SORU
1 Temmuz 2013, PAZARTESİ


Neden bir C işlevi, belirli bir değişkenin değerini değiştirir olmadığını belirlemek için bir derleyici oluşturmak için imkansız mı?

Bir kitapta bu satırı okudum:

Kanıtlanabilir o aslında bir derleyici inşa etmek mümkün değildir ya da bir C işlevi bir değişim değeri olup olmadığını özellikle değişken.

Paragraf inş-lik denetlerken derleyici muhafazakar neden bahsediyordu.

Neden böyle bir derleyici oluşturmak için imkansız mı?

Derleyici her zaman bir değişkeni yeniden, olmayan sabit bir fonksiyon üzerine çağrılan veya olmayan sabit bir parametre olarak kabul ediliyor olmadığını kontrol edin

CEVAP
1 Temmuz 2013, PAZARTESİ


Böyle bir derleyici var düşünün. Hadi kolaylık sağlamak için kabul fonksiyonu verilen bir değişken değiştirir 1 döndüren bir kütüphane işlevi ve işlevi yok 0 sağlar varsayalım. Bu program baskı nedir?

int variable = 0;

void f() {
    if (modifies_variable(f, variable)) {
        /* do nothing */
    } else {
        /* modify variable */
        variable = 1;
    }
}

int main(int argc, char **argv) {
    if (modifies_variable(f, variable)) {
        printf("Modifies variable\n");
    } else {
        printf("Does not modify variable\n");
    }

    return 0;
}

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

YORUMLAR

SPONSOR VİDEO

Rastgele Yazarlar

  • DigitalRev TV

    DigitalRev T

    30 AĞUSTOS 2007
  • Dopelives

    Dopelives

    30 Temmuz 2009
  • knopik96

    knopik96

    7 Mayıs 2011