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

  • ELawshea

    ELawshea

    26 Mayıs 2008
  • makemebad35

    makemebad35

    17 NİSAN 2006
  • The Brister

    The Brister

    10 ŞUBAT 2008