Function pointer with named arguments?What are the differences between a pointer variable and a reference...

Is there a way to generate a list of distinct numbers such that no two subsets ever have an equal sum?

Negative Resistance

Did the BCPL programming language support floats?

What to do with someone that cheated their way through university and a PhD program?

Thesis on avalanche prediction using One Class SVM

How can I practically buy stocks?

What is the term for a person whose job is to place products on shelves in stores?

Your bread will be buttered on both sides

can anyone help me with this awful query plan?

What is meant by "Prämie" in this letter? Do I have to pay it or it is just a reminder?

Critique of timeline aesthetic

On The Origin of Dissonant Chords

How to denote matrix elements succinctly?

Difference between did and does

"The cow" OR "a cow" OR "cows" in this context

Does a large simulator bay have standard public address announcements?

Retract an already submitted recommendation letter (written for an undergrad student)

Do I have an "anti-research" personality?

What happens in the secondary winding if there's no spark plug connected?

What makes accurate emulation of old systems a difficult task?

Contradiction proof for inequality of P and NP?

Farming on the moon

constexpr member function with std::vector data member in C++

Can someone publish a story that happened to you?



Function pointer with named arguments?


What are the differences between a pointer variable and a reference variable in C++?What is a smart pointer and when should I use one?What's the difference between a method and a function?var functionName = function() {} vs function functionName() {}How do function pointers in C work?Set a default parameter value for a JavaScript functionHow does free know how much to free?What does the exclamation mark do before the function?JavaScript plus sign in front of function nameWhy should I use a pointer rather than the object itself?






.everyoneloves__top-leaderboard:empty,.everyoneloves__mid-leaderboard:empty,.everyoneloves__bot-mid-leaderboard:empty{ height:90px;width:728px;box-sizing:border-box;
}







9















I recently came across a strange syntax in C program.



struct connector_agent_api{
bool (*receive)(slot *s, uint8_t *data, uint8_t length);
}


Is "receive" a function pointer?



If it is a function pointer, why does it have named arguments? Should it be like the following one?



bool (*receive)(slot *, uint8_t *, uint8_t);


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... :(










share|improve this question




















  • 11





    These names are for self-documentation only, they have no meaning for the functionality.

    – Eugene Sh.
    1 hour ago






  • 4





    Note this is very much like a function declaration in a header file, where parameter names are optional and have no effect on the resulting program.

    – jdehesa
    1 hour ago


















9















I recently came across a strange syntax in C program.



struct connector_agent_api{
bool (*receive)(slot *s, uint8_t *data, uint8_t length);
}


Is "receive" a function pointer?



If it is a function pointer, why does it have named arguments? Should it be like the following one?



bool (*receive)(slot *, uint8_t *, uint8_t);


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... :(










share|improve this question




















  • 11





    These names are for self-documentation only, they have no meaning for the functionality.

    – Eugene Sh.
    1 hour ago






  • 4





    Note this is very much like a function declaration in a header file, where parameter names are optional and have no effect on the resulting program.

    – jdehesa
    1 hour ago














9












9








9


1






I recently came across a strange syntax in C program.



struct connector_agent_api{
bool (*receive)(slot *s, uint8_t *data, uint8_t length);
}


Is "receive" a function pointer?



If it is a function pointer, why does it have named arguments? Should it be like the following one?



bool (*receive)(slot *, uint8_t *, uint8_t);


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... :(










share|improve this question
















I recently came across a strange syntax in C program.



struct connector_agent_api{
bool (*receive)(slot *s, uint8_t *data, uint8_t length);
}


Is "receive" a function pointer?



If it is a function pointer, why does it have named arguments? Should it be like the following one?



bool (*receive)(slot *, uint8_t *, uint8_t);


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... :(







c function pointers






share|improve this question















share|improve this question













share|improve this question




share|improve this question








edited 1 hour ago









John Kugelman

250k54407461




250k54407461










asked 1 hour ago









ZuckerReisZuckerReis

485




485








  • 11





    These names are for self-documentation only, they have no meaning for the functionality.

    – Eugene Sh.
    1 hour ago






  • 4





    Note this is very much like a function declaration in a header file, where parameter names are optional and have no effect on the resulting program.

    – jdehesa
    1 hour ago














  • 11





    These names are for self-documentation only, they have no meaning for the functionality.

    – Eugene Sh.
    1 hour ago






  • 4





    Note this is very much like a function declaration in a header file, where parameter names are optional and have no effect on the resulting program.

    – jdehesa
    1 hour ago








11




11





These names are for self-documentation only, they have no meaning for the functionality.

– Eugene Sh.
1 hour ago





These names are for self-documentation only, they have no meaning for the functionality.

– Eugene Sh.
1 hour ago




4




4





Note this is very much like a function declaration in a header file, where parameter names are optional and have no effect on the resulting program.

– jdehesa
1 hour ago





Note this is very much like a function declaration in a header file, where parameter names are optional and have no effect on the resulting program.

– jdehesa
1 hour ago












2 Answers
2






active

oldest

votes


















8














The names of arguments in a function pointer are optional, just as the names of arguments in a function declaration are optional. This is because parameter names if given are not used, so both formats are allowed.



The only place where function parameters require a name is in the actual definition of a function.



In section 6.7.6.3 of the C standard regarding Function Declarators, which includes both function prototypes and function pointers, paragraph 6 states:




A parameter type list specifies the types of, and may
declare identifiers for, the parameters of the function.




For a function definition, Section 6.9.1p5 states:




If the declarator includes a parameter type list, the
declaration of each parameter shall include an identifier, except
for the special case of a parameter list consisting of a single
parameter of type void , in which case there shall not be an
identifier. No declaration list shall follow.







share|improve this answer

































    1














    What makes you think it is a strange syntax? It is a valid declaration as per C standard. The fact that the parameters are named is irrelevant. The naming of such parameters is optional in this case. It can be really helpful if you or someone else is using an IDE because it could display the complete prototype upon using the function pointer to call the function and thus give a hint to the coder about the arguments to be supplied.






    share|improve this answer
























      Your Answer






      StackExchange.ifUsing("editor", function () {
      StackExchange.using("externalEditor", function () {
      StackExchange.using("snippets", function () {
      StackExchange.snippets.init();
      });
      });
      }, "code-snippets");

      StackExchange.ready(function() {
      var channelOptions = {
      tags: "".split(" "),
      id: "1"
      };
      initTagRenderer("".split(" "), "".split(" "), channelOptions);

      StackExchange.using("externalEditor", function() {
      // Have to fire editor after snippets, if snippets enabled
      if (StackExchange.settings.snippets.snippetsEnabled) {
      StackExchange.using("snippets", function() {
      createEditor();
      });
      }
      else {
      createEditor();
      }
      });

      function createEditor() {
      StackExchange.prepareEditor({
      heartbeatType: 'answer',
      autoActivateHeartbeat: false,
      convertImagesToLinks: true,
      noModals: true,
      showLowRepImageUploadWarning: true,
      reputationToPostImages: 10,
      bindNavPrevention: true,
      postfix: "",
      imageUploader: {
      brandingHtml: "Powered by u003ca class="icon-imgur-white" href="https://imgur.com/"u003eu003c/au003e",
      contentPolicyHtml: "User contributions licensed under u003ca href="https://creativecommons.org/licenses/by-sa/3.0/"u003ecc by-sa 3.0 with attribution requiredu003c/au003e u003ca href="https://stackoverflow.com/legal/content-policy"u003e(content policy)u003c/au003e",
      allowUrls: true
      },
      onDemand: true,
      discardSelector: ".discard-answer"
      ,immediatelyShowMarkdownHelp:true
      });


      }
      });














      draft saved

      draft discarded


















      StackExchange.ready(
      function () {
      StackExchange.openid.initPostLogin('.new-post-login', 'https%3a%2f%2fstackoverflow.com%2fquestions%2f55871507%2ffunction-pointer-with-named-arguments%23new-answer', 'question_page');
      }
      );

      Post as a guest















      Required, but never shown

























      2 Answers
      2






      active

      oldest

      votes








      2 Answers
      2






      active

      oldest

      votes









      active

      oldest

      votes






      active

      oldest

      votes









      8














      The names of arguments in a function pointer are optional, just as the names of arguments in a function declaration are optional. This is because parameter names if given are not used, so both formats are allowed.



      The only place where function parameters require a name is in the actual definition of a function.



      In section 6.7.6.3 of the C standard regarding Function Declarators, which includes both function prototypes and function pointers, paragraph 6 states:




      A parameter type list specifies the types of, and may
      declare identifiers for, the parameters of the function.




      For a function definition, Section 6.9.1p5 states:




      If the declarator includes a parameter type list, the
      declaration of each parameter shall include an identifier, except
      for the special case of a parameter list consisting of a single
      parameter of type void , in which case there shall not be an
      identifier. No declaration list shall follow.







      share|improve this answer






























        8














        The names of arguments in a function pointer are optional, just as the names of arguments in a function declaration are optional. This is because parameter names if given are not used, so both formats are allowed.



        The only place where function parameters require a name is in the actual definition of a function.



        In section 6.7.6.3 of the C standard regarding Function Declarators, which includes both function prototypes and function pointers, paragraph 6 states:




        A parameter type list specifies the types of, and may
        declare identifiers for, the parameters of the function.




        For a function definition, Section 6.9.1p5 states:




        If the declarator includes a parameter type list, the
        declaration of each parameter shall include an identifier, except
        for the special case of a parameter list consisting of a single
        parameter of type void , in which case there shall not be an
        identifier. No declaration list shall follow.







        share|improve this answer




























          8












          8








          8







          The names of arguments in a function pointer are optional, just as the names of arguments in a function declaration are optional. This is because parameter names if given are not used, so both formats are allowed.



          The only place where function parameters require a name is in the actual definition of a function.



          In section 6.7.6.3 of the C standard regarding Function Declarators, which includes both function prototypes and function pointers, paragraph 6 states:




          A parameter type list specifies the types of, and may
          declare identifiers for, the parameters of the function.




          For a function definition, Section 6.9.1p5 states:




          If the declarator includes a parameter type list, the
          declaration of each parameter shall include an identifier, except
          for the special case of a parameter list consisting of a single
          parameter of type void , in which case there shall not be an
          identifier. No declaration list shall follow.







          share|improve this answer















          The names of arguments in a function pointer are optional, just as the names of arguments in a function declaration are optional. This is because parameter names if given are not used, so both formats are allowed.



          The only place where function parameters require a name is in the actual definition of a function.



          In section 6.7.6.3 of the C standard regarding Function Declarators, which includes both function prototypes and function pointers, paragraph 6 states:




          A parameter type list specifies the types of, and may
          declare identifiers for, the parameters of the function.




          For a function definition, Section 6.9.1p5 states:




          If the declarator includes a parameter type list, the
          declaration of each parameter shall include an identifier, except
          for the special case of a parameter list consisting of a single
          parameter of type void , in which case there shall not be an
          identifier. No declaration list shall follow.








          share|improve this answer














          share|improve this answer



          share|improve this answer








          edited 25 mins ago

























          answered 1 hour ago









          dbushdbush

          105k14110148




          105k14110148

























              1














              What makes you think it is a strange syntax? It is a valid declaration as per C standard. The fact that the parameters are named is irrelevant. The naming of such parameters is optional in this case. It can be really helpful if you or someone else is using an IDE because it could display the complete prototype upon using the function pointer to call the function and thus give a hint to the coder about the arguments to be supplied.






              share|improve this answer




























                1














                What makes you think it is a strange syntax? It is a valid declaration as per C standard. The fact that the parameters are named is irrelevant. The naming of such parameters is optional in this case. It can be really helpful if you or someone else is using an IDE because it could display the complete prototype upon using the function pointer to call the function and thus give a hint to the coder about the arguments to be supplied.






                share|improve this answer


























                  1












                  1








                  1







                  What makes you think it is a strange syntax? It is a valid declaration as per C standard. The fact that the parameters are named is irrelevant. The naming of such parameters is optional in this case. It can be really helpful if you or someone else is using an IDE because it could display the complete prototype upon using the function pointer to call the function and thus give a hint to the coder about the arguments to be supplied.






                  share|improve this answer













                  What makes you think it is a strange syntax? It is a valid declaration as per C standard. The fact that the parameters are named is irrelevant. The naming of such parameters is optional in this case. It can be really helpful if you or someone else is using an IDE because it could display the complete prototype upon using the function pointer to call the function and thus give a hint to the coder about the arguments to be supplied.







                  share|improve this answer












                  share|improve this answer



                  share|improve this answer










                  answered 1 hour ago









                  machine_1machine_1

                  2,65521332




                  2,65521332






























                      draft saved

                      draft discarded




















































                      Thanks for contributing an answer to Stack Overflow!


                      • Please be sure to answer the question. Provide details and share your research!

                      But avoid



                      • Asking for help, clarification, or responding to other answers.

                      • Making statements based on opinion; back them up with references or personal experience.


                      To learn more, see our tips on writing great answers.




                      draft saved


                      draft discarded














                      StackExchange.ready(
                      function () {
                      StackExchange.openid.initPostLogin('.new-post-login', 'https%3a%2f%2fstackoverflow.com%2fquestions%2f55871507%2ffunction-pointer-with-named-arguments%23new-answer', 'question_page');
                      }
                      );

                      Post as a guest















                      Required, but never shown





















































                      Required, but never shown














                      Required, but never shown












                      Required, but never shown







                      Required, but never shown

































                      Required, but never shown














                      Required, but never shown












                      Required, but never shown







                      Required, but never shown







                      Popular posts from this blog

                      Gersau Kjelder | Navigasjonsmeny46°59′0″N 8°31′0″E46°59′0″N...

                      Nässjö kommun Tettstader | Kjelder | NavigasjonsmenyeVIAFISNIGeoNamesMusicBrainz (area)

                      Kvitkval Innhaldsliste Taksonomi og utvikling | Utsjånad og levevis | Utbreiing | Åtferd |...