title: Function pointer with named arguments?
body: <p>I recently came across a strange syntax in C program. </p>
  
  <pre><code>struct connector_agent_api{
      bool (*receive)(slot *s, uint8_t *data, uint8_t length);
  }
  </code></pre>
  
  <p>Is "receive" a function pointer? </p>
  
  <p>If it is a function pointer, why does it have named arguments? Should it be like the following one? </p>
  
  <pre><code>bool (*receive)(slot *, uint8_t *, uint8_t);
  </code></pre>
  
  <p>It certainly compiled and being used in a library. I searched on internet a lot and tried to justify this kind of syntax. I still don't know why this thing can be compiled... :(</p>