title: Implications of typedef void FOO vs. #define FOO void in function signatures
body: <p>While going through some source code that heavily mixes C and C++, I came across the following (slightly modified to protect the work of the company, the meaning remains the same):</p>
  
  <pre><code>/*
   * Typedefs of void are synonymous with the void keyword in C,
   * but not in C++. In order to support the use of MY_VOID
   * in place of the void keyword to specify that a function takes no
   * arguments, it must be a macro rather than a typedef.
   */
  #define MY_VOID void
  </code></pre>
  
  <p>What is the difference between <code>typedef void MY_VOID</code> and <code>#define MY_VOID void</code> in this specific context?</p>
  
  <hr>
  
  <p>I don't believe this is a duplicate of <a href="https://stackoverflow.com/questions/540748/void-void-c-and-c">this question</a> because it asks specifically about the implications in regards to function signatures, rather than a much more general "what's the difference".</p>