title: What does [ N ... M ] mean in C aggregate initializers?
body: <p>From <a href="http://lxr.linux.no/#linux+v3.3.1/arch/unicore32/kernel/sys.c#L123" rel="noreferrer">sys.c</a> line 123:</p>
  
  <pre><code>void *sys_call_table[__NR_syscalls] = 
  {
      [0 ... __NR_syscalls-1] = sys_ni_syscall,
  #include &lt;asm/unistd.h&gt;
  };
  </code></pre>
  
  <p><code>sys_call_table</code> is a generic pointer to arrays, I can see that. However what is the notation:    </p>
  
  <pre><code>[0 ... __NR_syscalls-1]
  </code></pre>
  
  <p>What is the <code>...</code>?</p>
  
  <hr>
  
  <p><strong>EDIT:</strong><br>
  I learned another C trick here: <code>#include &lt;asm/unistd.h&gt;</code> will be <em>preprocessed</em> and replaced with its content and assigned to <code>[0 ... _NR_syscalls-1]</code>.</p>