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;
}
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
add a comment |
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
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
add a comment |
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
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
c function pointers
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
add a comment |
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
add a comment |
2 Answers
2
active
oldest
votes
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.
add a comment |
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.
add a comment |
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
});
}
});
Sign up or log in
StackExchange.ready(function () {
StackExchange.helpers.onClickDraftSave('#login-link');
});
Sign up using Google
Sign up using Facebook
Sign up using Email and Password
Post as a guest
Required, but never shown
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
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.
add a comment |
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.
add a comment |
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.
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.
edited 25 mins ago
answered 1 hour ago
dbushdbush
105k14110148
105k14110148
add a comment |
add a comment |
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.
add a comment |
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.
add a comment |
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.
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.
answered 1 hour ago
machine_1machine_1
2,65521332
2,65521332
add a comment |
add a comment |
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.
Sign up or log in
StackExchange.ready(function () {
StackExchange.helpers.onClickDraftSave('#login-link');
});
Sign up using Google
Sign up using Facebook
Sign up using Email and Password
Post as a guest
Required, but never shown
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
Sign up or log in
StackExchange.ready(function () {
StackExchange.helpers.onClickDraftSave('#login-link');
});
Sign up using Google
Sign up using Facebook
Sign up using Email and Password
Post as a guest
Required, but never shown
Sign up or log in
StackExchange.ready(function () {
StackExchange.helpers.onClickDraftSave('#login-link');
});
Sign up using Google
Sign up using Facebook
Sign up using Email and Password
Post as a guest
Required, but never shown
Sign up or log in
StackExchange.ready(function () {
StackExchange.helpers.onClickDraftSave('#login-link');
});
Sign up using Google
Sign up using Facebook
Sign up using Email and Password
Sign up using Google
Sign up using Facebook
Sign up using Email and Password
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
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