How is this typedef possible?
<p>In <a href="https://stackoverflow.com/q/36971158/4354477">this SO question</a> I've encountered a <em>very</em> weird <code>typedef</code>:</p>

<pre><code>struct Date {
    int day, month, year;
} typedef date_s;
</code></pre>

<p>I've always been seeing <code>typedef</code>s following this 'rule':</p>

<pre><code>typedef &lt;existing&gt; &lt;new&gt;;
</code></pre>

<p>For example:</p>

<pre><code>typedef unsigned long long ull;
typedef int kph; // speed
typedef void (*alpm_cb_log)(alpm_loglevel_t, const char *, va_list);

typedef int int_t;
typedef char char_t, *char_p, (*fp)(void);
</code></pre>

<p><sub>The 4th one is taken from <a href="https://stackoverflow.com/q/9322788/4354477">here</a>, the 5th and 6th are from <a href="http://en.cppreference.com/w/c/language/typedef" rel="nofollow noreferrer">cppreference</a></sub></p>

<hr>

<p>And <a href="https://stackoverflow.com/q/252780/4354477">this</a> is how I would <code>typedef</code> a <code>struct</code>:</p>

<pre><code>typedef struct {
    int a, b, c;
} data;

// and then use it
data Something;
</code></pre>

<hr>

<p>The question is <em>how is this even possible to write such a <code>typedef</code></em>? It doesn't even make sense (at least to me). </p>

<p><code>clang</code> doesn't give any errors or warnings, even with <code>-Wall -Wextra</code>.</p>

<p><strong>Bonus question:</strong> should I advise the author of the question where this code could be found <em>to avoid using</em> such a <code>typedef</code> (because it's very unusual and may lead to confusion)?</p>