SORU
28 Kasım 2012, ÇARŞAMBA


Bir işlev adı etrafında parantez ne demek?

Proje kaynak dosyaları bir C fonksiyonu tanım buldum:

int (foo) (int *bar)
{
    return foo (bar);
}

Not: bir işlev işaretçisi değil hiçbir yıldız foo, yanında yoktur. Yoksa değil mi? Burada özyinelemeli çağrı ile ne olacak?

CEVAP
28 Kasım 2012, ÇARŞAMBA


Herhangi basit şeyler, foodevam devamsızlık'In imza eşdeğerdir

int foo (int *bar)

Tek bağlamda hangi gördüm, onlar görünüşte gereksiz parantez etrafında fonksiyon isimleri ne zaman var, hem de bir işlevi ve fonksiyonu gibi makro ile aynı adı ve programcı istiyor önlemek için makro genişleme.

Bu uygulama ilk başta biraz garip görünebilir, ama C kütüphanesi providing some macros and functions with identical names tarafından emsal teşkil ediyor.

Böyle bir fonksiyon/makro çifti isdigit(). Kütüphane olarak tanımlayabilir

/* the macro */
#define isdigit(c) ...

/* the function */
int (isdigit)(int c) /* avoid the macro through the use of parentheses */
{
  return isdigit(c); /* use the macro */
}

Fonksiyon hemen hemen aynı yukarıda görünüyor, bu kodu da ne oluyor sanıyorum.

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

YORUMLAR

SPONSOR VİDEO

Rastgele Yazarlar

  • AutoHotkey Tutorials

    AutoHotkey T

    29 Mayıs 2010
  • CodingMadeEasy

    CodingMadeEa

    25 EYLÜL 2010
  • Hey Nadine

    Hey Nadine

    24 Kasım 2006

İLGİLİ SORU / CEVAPLAR