SORU
22 Mayıs 2015, Cuma


Bu &; [0 ... 255] =""; sözdizimi C nedir?

js0n.c bağlıyordum

Kod sözdizimi aşağıdaki gibidir:

    static void *gostruct[] =
    {
        [0 ... 255] = &&l_bad,
        ['\t'] = &&l_loop, [' '] = &&l_loop, ['\r'] = &&l_loop, ['\n'] = &&l_loop,
        ['"'] = &&l_qup,
        [':'] = &&l_loop, [','] = &&l_loop,
        ['['] = &&l_up, [']'] = &&l_down, // tracking [] and {} individually would allow fuller validation but is really messy
        ['{'] = &&l_up, ['}'] = &&l_down,
        ['-'] = &&l_bare, [48 ... 57] = &&l_bare, // 0-9
        [65 ... 90] = &&l_bare, // A-Z
        [97 ... 122] = &&l_bare // a-z
    };

........
.......

l_bad:
    *vlen = cur - json; // where error'd
    return 0;

........
........

Herkes burada ne yaptığımızı açıklayabilir mi? [0 ... 255] ve sözdizimi nedir 5* *burada mı?

CEVAP
22 Mayıs 2015, Cuma


... bir uzantısı GCC tarafından sağlanır

https://gcc.gnu.org/onlinedocs/gcc/Designated-Inits.html#Designated-Inits

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

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

&& başka bir uzantısıdır

https://gcc.gnu.org/onlinedocs/gcc/Labels-as-Values.html#Labels-as-Values

Bir etiket mevcut işlevi tanımlı adresini almak (veya tekli operatör && ile içeren bir fonksiyon). Değeri vardır tipi void *. Bu değer, sabit bir yerde kullanılabilir bu tür sürekli geçerlidir. Örneğin:

 void *ptr;
 /* ... */
 ptr = &&foo;

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

YORUMLAR

SPONSOR VİDEO

Rastgele Yazarlar

  • infodirt

    infodirt

    11 Mart 2009
  • REK Roth Productions

    REK Roth Pro

    8 Ocak 2011
  • sghaff1

    sghaff1

    23 Mart 2009