Struct declaration versus definition
<p>How do I declare, versus define a struct, such as for data shared between multiple files. I understand the idea when defining primitives. So, for example, I might have:</p>

<pre><code>extern int myvalue;  /* in shared header file */
</code></pre>

<p>and</p>

<pre><code>int myvalue = 5;   /* in data.c file */
</code></pre>

<p>But, how do I do the same thing for structs. For example, if I have the following type:</p>

<pre><code>   typedef struct {
       size_t size;
       char * strings[];
   } STRLIST;
</code></pre>

<p>If I then use the statement:</p>

<pre><code>STRLIST list;
</code></pre>

<p>This is both a declaration and definition. So, how do apply the same principle of using an extern?</p>