title: Is Visual Studio's C4028 warning (formal parameter different from declaration) spurious?
body: <p>Consider the following function declaration and definition. In the header file:</p>
  
  <pre><code>void some_function(int param);
  </code></pre>
  
  <p>In the source file:</p>
  
  <pre><code>#include "test.h"
  
  void some_function(const int param) {}
  
  int main(void) {
      return 0;
  }
  </code></pre>
  
  <p>Under Visual Studio 2010, compiling as a pure C project, I see <code>warning C4028: formal parameter 1 different from declaration</code>. But as far as I know, this is perfectly valid C, and fairly common practice.</p>
  
  <p>Am I wrong about this, and is VS2010 therefore correct to warn me? Or if it is a spurious warning, can I disable it specifically for this kind of case, but keep the warning on for actual cases of mismatched parameter types?</p>
  
  <p>(The actual compiler that comes with VS2010 is: <em>Microsoft (R) 32-bit C/C++ Optimizing Compiler Version 16.00.30319.01 for 80x86</em>. My command line is simply <code>cl test.c</code>.)</p>