SORU
9 NİSAN 2012, PAZARTESİ


C sözdizimi bu tarz nedir?

sys.c 123 satırından:

void *sys_call_table[__NR_syscalls] = 
{
    [0 ... __NR_syscalls-1] = sys_ni_syscall,
#include <asm/unistd.h>
};

sys_call_table görüyorum ki diziler için genel bir işaretçi. Ancak gösterimde:

[0 ... __NR_syscalls-1]

... nedir?


DÜZENLEME:
Başka bir C hile burada öğrendim: #include <asm/unistd.h> olacakönişlenmişve içeriği ile değiştirilir ve [0 ... _NR_syscalls-1] atanmış.

CEVAP
9 NİSAN 2012, PAZARTESİ


Başlatma kullanıyorDesignated Initializers.

Aralığı tabanlı başlatma gnu gcc uzantısıdır.

Aynı değer öğeleri bir dizi başlatmak için, [first ... last] = value yazın. Bu bir GNU oluşumudur. Örneğin,

 int widths[] = { [0 ... 9] = 1, [10 ... 99] = 2, [100] = 3 };

Taşınabilir değildir. -pedantic ile derleme mi?

Burada nasıl çalışır?
Bu basit gerçek içeriği ile #include <asm/unistd.h> değiştirir(çeşitli sembolik sabitler ve türlerini tanımlar, ve çeşitli fonksiyonları beyan eder) aralığı daha sonra başka işaretçiler dizisi başlatma için kullanılan inşa tabanlı.

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

YORUMLAR

SPONSOR VİDEO

Rastgele Yazarlar

  • Facebook Developers

    Facebook Dev

    24 ŞUBAT 2009
  • lissaandbeauty

    lissaandbeau

    24 Aralık 2011
  • LiveForGodsKingdom

    LiveForGodsK

    6 NİSAN 2008