declare as function pointer and initialize in the same line The Next CEO of Stack OverflowWhat are the differences between a pointer variable and a reference variable in C++?What is a smart pointer and when should I use one?Returning unique_ptr from functionsWhy is reading lines from stdin much slower in C++ than Python?Image Processing: Algorithm Improvement for 'Coca-Cola Can' RecognitionWhy should I use a pointer rather than the object itself?Replacing a 32-bit loop counter with 64-bit introduces crazy performance deviationsFunction pointer, which can point to every thing?Has a std::byte pointer the same aliasing implications as char*?declare and define function pointer variable in one line
How fast would a person need to move to trick the eye?
How did people program for Consoles with multiple CPUs?
Preparing Indesign booklet with .psd graphics for print
Make solar eclipses exceedingly rare, but still have new moons
How did the Bene Gesserit know how to make a Kwisatz Haderach?
I believe this to be a fraud - hired, then asked to cash check and send cash as Bitcoin
multiple labels for a single equation
How do we know the LHC results are robust?
Help understanding this unsettling image of Titan, Epimetheus, and Saturn's rings?
Are there any unintended negative consequences to allowing PCs to gain multiple levels at once in a short milestone-XP game?
In excess I'm lethal
Why do airplanes bank sharply to the right after air-to-air refueling?
Contours of a clandestine nature
Different harmonic changes implied by a simple descending scale
Why do we use the plural of movies in this phrase "We went to the movies last night."?
Can we say or write : "No, it'sn't"?
If a black hole is created from light, can this black hole then move at speed of light?
Why do remote companies require working in the US?
How to transpose the 1st and -1th levels of arbitrarily nested array?
How to start emacs in "nothing" mode (`fundamental-mode`)
WOW air has ceased operation, can I get my tickets refunded?
How do scammers retract money, while you can’t?
What does convergence in distribution "in the Gromov–Hausdorff" sense mean?
What flight has the highest ratio of time difference to flight time?
declare as function pointer and initialize in the same line
The Next CEO of Stack OverflowWhat are the differences between a pointer variable and a reference variable in C++?What is a smart pointer and when should I use one?Returning unique_ptr from functionsWhy is reading lines from stdin much slower in C++ than Python?Image Processing: Algorithm Improvement for 'Coca-Cola Can' RecognitionWhy should I use a pointer rather than the object itself?Replacing a 32-bit loop counter with 64-bit introduces crazy performance deviationsFunction pointer, which can point to every thing?Has a std::byte pointer the same aliasing implications as char*?declare and define function pointer variable in one line
In C++ how do we do the following
// fundamental language construct
type name = value;
// for example
int x = y;
with function pointers?
typedef (char)(*FP)(unsigned);
// AFAIK not possible in C++
FP x = y ;
I can use lambdas
FP x = []( unsigned k) -> char return char(k);
But I do not know how to do this without lambda. Any ideas? This is not an answer. we know this works:
void whatever ()
typedef void (*FP) (void);
FP x = whatever ;
The question is if one can do this in one line in C++. Like one can do it in one line in C++ with every other type kind.
c++
New contributor
add a comment |
In C++ how do we do the following
// fundamental language construct
type name = value;
// for example
int x = y;
with function pointers?
typedef (char)(*FP)(unsigned);
// AFAIK not possible in C++
FP x = y ;
I can use lambdas
FP x = []( unsigned k) -> char return char(k);
But I do not know how to do this without lambda. Any ideas? This is not an answer. we know this works:
void whatever ()
typedef void (*FP) (void);
FP x = whatever ;
The question is if one can do this in one line in C++. Like one can do it in one line in C++ with every other type kind.
c++
New contributor
3
You could always stick withauto x = &the_function;'
.
– François Andrieux
yesterday
1
The name of a function pointer variable appears between the return type and the arguments It won't look liketype name = value;
.
– François Andrieux
yesterday
You're missing the&
beforewhatever
.FP x = &whatever ;
– dave
yesterday
@dave: That's the same for functions, you don't need the ampersand. @emma: Why should that not be possible in C++? This should work fine (except for the(char)
, which should bechar
in yourtypedef
)
– andreee
yesterday
add a comment |
In C++ how do we do the following
// fundamental language construct
type name = value;
// for example
int x = y;
with function pointers?
typedef (char)(*FP)(unsigned);
// AFAIK not possible in C++
FP x = y ;
I can use lambdas
FP x = []( unsigned k) -> char return char(k);
But I do not know how to do this without lambda. Any ideas? This is not an answer. we know this works:
void whatever ()
typedef void (*FP) (void);
FP x = whatever ;
The question is if one can do this in one line in C++. Like one can do it in one line in C++ with every other type kind.
c++
New contributor
In C++ how do we do the following
// fundamental language construct
type name = value;
// for example
int x = y;
with function pointers?
typedef (char)(*FP)(unsigned);
// AFAIK not possible in C++
FP x = y ;
I can use lambdas
FP x = []( unsigned k) -> char return char(k);
But I do not know how to do this without lambda. Any ideas? This is not an answer. we know this works:
void whatever ()
typedef void (*FP) (void);
FP x = whatever ;
The question is if one can do this in one line in C++. Like one can do it in one line in C++ with every other type kind.
c++
c++
New contributor
New contributor
edited yesterday
Guillaume Racicot
15.9k53770
15.9k53770
New contributor
asked yesterday
emma brainemma brain
1083
1083
New contributor
New contributor
3
You could always stick withauto x = &the_function;'
.
– François Andrieux
yesterday
1
The name of a function pointer variable appears between the return type and the arguments It won't look liketype name = value;
.
– François Andrieux
yesterday
You're missing the&
beforewhatever
.FP x = &whatever ;
– dave
yesterday
@dave: That's the same for functions, you don't need the ampersand. @emma: Why should that not be possible in C++? This should work fine (except for the(char)
, which should bechar
in yourtypedef
)
– andreee
yesterday
add a comment |
3
You could always stick withauto x = &the_function;'
.
– François Andrieux
yesterday
1
The name of a function pointer variable appears between the return type and the arguments It won't look liketype name = value;
.
– François Andrieux
yesterday
You're missing the&
beforewhatever
.FP x = &whatever ;
– dave
yesterday
@dave: That's the same for functions, you don't need the ampersand. @emma: Why should that not be possible in C++? This should work fine (except for the(char)
, which should bechar
in yourtypedef
)
– andreee
yesterday
3
3
You could always stick with
auto x = &the_function;'
.– François Andrieux
yesterday
You could always stick with
auto x = &the_function;'
.– François Andrieux
yesterday
1
1
The name of a function pointer variable appears between the return type and the arguments It won't look like
type name = value;
.– François Andrieux
yesterday
The name of a function pointer variable appears between the return type and the arguments It won't look like
type name = value;
.– François Andrieux
yesterday
You're missing the
&
before whatever
. FP x = &whatever ;
– dave
yesterday
You're missing the
&
before whatever
. FP x = &whatever ;
– dave
yesterday
@dave: That's the same for functions, you don't need the ampersand. @emma: Why should that not be possible in C++? This should work fine (except for the
(char)
, which should be char
in your typedef
)– andreee
yesterday
@dave: That's the same for functions, you don't need the ampersand. @emma: Why should that not be possible in C++? This should work fine (except for the
(char)
, which should be char
in your typedef
)– andreee
yesterday
add a comment |
2 Answers
2
active
oldest
votes
Whenever you can write a typedef, you can also write a variable declaration with no typedef, with almost identical syntax.
Example:
// typedef
typedef char(*FP)(unsigned);
FP x = y ;
// no typedef
char(*x)(unsigned) = y;
Remove the typedef
keyword, and you have a variable declaration. Slap an initialisation on it if you want.
Works just as well as in C, and can also be used for array types:char (*img)[width][3] = malloc(height*sizeof(*img));
While this syntax is pretty useless in C++ (no array types with runtime sizes), it works well in C and sports the same counterintuitive syntax.
– cmaster
yesterday
add a comment |
You can use auto
:
auto fptr = &f;
It skips the need of a typedef and conserve a nice syntax.
I like this answer a bit more than the accepted one. It is more C++11-ish even though it is not clear that OP has or wants a C++11 solution. But hey, C++11 is not the "all new exotic" standard any more.
– TobiMcNamobi
17 hours ago
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
);
);
emma brain is a new contributor. Be nice, and check out our Code of Conduct.
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%2f55400483%2fdeclare-as-function-pointer-and-initialize-in-the-same-line%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
Whenever you can write a typedef, you can also write a variable declaration with no typedef, with almost identical syntax.
Example:
// typedef
typedef char(*FP)(unsigned);
FP x = y ;
// no typedef
char(*x)(unsigned) = y;
Remove the typedef
keyword, and you have a variable declaration. Slap an initialisation on it if you want.
Works just as well as in C, and can also be used for array types:char (*img)[width][3] = malloc(height*sizeof(*img));
While this syntax is pretty useless in C++ (no array types with runtime sizes), it works well in C and sports the same counterintuitive syntax.
– cmaster
yesterday
add a comment |
Whenever you can write a typedef, you can also write a variable declaration with no typedef, with almost identical syntax.
Example:
// typedef
typedef char(*FP)(unsigned);
FP x = y ;
// no typedef
char(*x)(unsigned) = y;
Remove the typedef
keyword, and you have a variable declaration. Slap an initialisation on it if you want.
Works just as well as in C, and can also be used for array types:char (*img)[width][3] = malloc(height*sizeof(*img));
While this syntax is pretty useless in C++ (no array types with runtime sizes), it works well in C and sports the same counterintuitive syntax.
– cmaster
yesterday
add a comment |
Whenever you can write a typedef, you can also write a variable declaration with no typedef, with almost identical syntax.
Example:
// typedef
typedef char(*FP)(unsigned);
FP x = y ;
// no typedef
char(*x)(unsigned) = y;
Remove the typedef
keyword, and you have a variable declaration. Slap an initialisation on it if you want.
Whenever you can write a typedef, you can also write a variable declaration with no typedef, with almost identical syntax.
Example:
// typedef
typedef char(*FP)(unsigned);
FP x = y ;
// no typedef
char(*x)(unsigned) = y;
Remove the typedef
keyword, and you have a variable declaration. Slap an initialisation on it if you want.
answered yesterday
n.m.n.m.
73.7k885172
73.7k885172
Works just as well as in C, and can also be used for array types:char (*img)[width][3] = malloc(height*sizeof(*img));
While this syntax is pretty useless in C++ (no array types with runtime sizes), it works well in C and sports the same counterintuitive syntax.
– cmaster
yesterday
add a comment |
Works just as well as in C, and can also be used for array types:char (*img)[width][3] = malloc(height*sizeof(*img));
While this syntax is pretty useless in C++ (no array types with runtime sizes), it works well in C and sports the same counterintuitive syntax.
– cmaster
yesterday
Works just as well as in C, and can also be used for array types:
char (*img)[width][3] = malloc(height*sizeof(*img));
While this syntax is pretty useless in C++ (no array types with runtime sizes), it works well in C and sports the same counterintuitive syntax.– cmaster
yesterday
Works just as well as in C, and can also be used for array types:
char (*img)[width][3] = malloc(height*sizeof(*img));
While this syntax is pretty useless in C++ (no array types with runtime sizes), it works well in C and sports the same counterintuitive syntax.– cmaster
yesterday
add a comment |
You can use auto
:
auto fptr = &f;
It skips the need of a typedef and conserve a nice syntax.
I like this answer a bit more than the accepted one. It is more C++11-ish even though it is not clear that OP has or wants a C++11 solution. But hey, C++11 is not the "all new exotic" standard any more.
– TobiMcNamobi
17 hours ago
add a comment |
You can use auto
:
auto fptr = &f;
It skips the need of a typedef and conserve a nice syntax.
I like this answer a bit more than the accepted one. It is more C++11-ish even though it is not clear that OP has or wants a C++11 solution. But hey, C++11 is not the "all new exotic" standard any more.
– TobiMcNamobi
17 hours ago
add a comment |
You can use auto
:
auto fptr = &f;
It skips the need of a typedef and conserve a nice syntax.
You can use auto
:
auto fptr = &f;
It skips the need of a typedef and conserve a nice syntax.
answered yesterday
Guillaume RacicotGuillaume Racicot
15.9k53770
15.9k53770
I like this answer a bit more than the accepted one. It is more C++11-ish even though it is not clear that OP has or wants a C++11 solution. But hey, C++11 is not the "all new exotic" standard any more.
– TobiMcNamobi
17 hours ago
add a comment |
I like this answer a bit more than the accepted one. It is more C++11-ish even though it is not clear that OP has or wants a C++11 solution. But hey, C++11 is not the "all new exotic" standard any more.
– TobiMcNamobi
17 hours ago
I like this answer a bit more than the accepted one. It is more C++11-ish even though it is not clear that OP has or wants a C++11 solution. But hey, C++11 is not the "all new exotic" standard any more.
– TobiMcNamobi
17 hours ago
I like this answer a bit more than the accepted one. It is more C++11-ish even though it is not clear that OP has or wants a C++11 solution. But hey, C++11 is not the "all new exotic" standard any more.
– TobiMcNamobi
17 hours ago
add a comment |
emma brain is a new contributor. Be nice, and check out our Code of Conduct.
emma brain is a new contributor. Be nice, and check out our Code of Conduct.
emma brain is a new contributor. Be nice, and check out our Code of Conduct.
emma brain is a new contributor. Be nice, and check out our Code of Conduct.
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%2f55400483%2fdeclare-as-function-pointer-and-initialize-in-the-same-line%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
3
You could always stick with
auto x = &the_function;'
.– François Andrieux
yesterday
1
The name of a function pointer variable appears between the return type and the arguments It won't look like
type name = value;
.– François Andrieux
yesterday
You're missing the
&
beforewhatever
.FP x = &whatever ;
– dave
yesterday
@dave: That's the same for functions, you don't need the ampersand. @emma: Why should that not be possible in C++? This should work fine (except for the
(char)
, which should bechar
in yourtypedef
)– andreee
yesterday