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

  • mliskIT

    mliskIT

    29 Mart 2012
  • Munchkin the Teddy Bear

    Munchkin the

    30 EYLÜL 2011
  • williamfitzsimmons

    williamfitzs

    14 Mart 2008