title: Is typedef a storage-class-specifier?
body: <p>I tried the following code</p>
  
  <pre><code>#include &lt;stdio.h&gt;
  
  int main(void)
  {
      typedef static int sint;
      sint i = 10;
  
      return 0;
  }
  </code></pre>
  
  <p>and hit the following error:</p>
  
  <pre><code>error: multiple storage classes in declaration specifiers
  </code></pre>
  
  <p>When I referred the C99 specification, I came to know that <code>typedef</code> is a <code>storage class</code>. </p>
  
  <pre><code>6.7.1 Storage-class specifiers
  
  Syntax
  
  storage-class-specifier:
      typedef
      extern
      static
      auto
      register
  
  Constraints: At most, one storage-class specifier may be 
               given in the declaration specifiers in a declaration
  
  Semantics: The typedef specifier is called a ‘‘storage-class specifier’’ 
             for syntactic convenience only; 
  </code></pre>
  
  <p>The only explanation that I could find (based on some internet search and cross referring various sections in C99 specification) was <code>syntactic convenience only to make the grammar simpler</code>.</p>
  
  <p>I'm looking for some justification/explanation on how can a type name have storage class specifier? </p>
  
  <p>Doesn't it make sense to have a code like <code>typedef static int sint;</code>?</p>
  
  <p>or Where am I going wrong?!</p>