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

  • Blendtec

    Blendtec

    30 EKİM 2006
  • Joseph Herscher

    Joseph Hersc

    14 Mart 2007
  • xdadevelopers

    xdadeveloper

    25 Aralık 2009