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

  • Britec09

    Britec09

    4 Mart 2009
  • merumputdotcom

    merumputdotc

    24 ŞUBAT 2012
  • VvCompHelpvV

    VvCompHelpvV

    4 EYLÜL 2007

İLGİLİ SORU / CEVAPLAR