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

  • ELPRESADOR

    ELPRESADOR

    21 HAZİRAN 2008
  • newport83

    newport83

    19 HAZİRAN 2006
  • tutvid

    tutvid

    19 AĞUSTOS 2006