Note that there are some explanatory texts on larger screens.

plurals
  1. POFunction pointers - pass arguments to a function pointer
    primarykey
    data
    text
    <p>I have a problem with the code that uses function pointers, take a look:</p> <pre><code>#include &lt;stdio.h&gt; #include &lt;stdlib.h&gt; typedef void (*VFUNCV)(void); void fun1(int a, double b) { printf("%d %f fun1\n", a, b); } void fun2(int a, double b) { printf("%d %f fun2\n", a, b); } void call(int which, VFUNCV* fun, int a, double b) { fun[which](a, b); } int main() { VFUNCV fun[2] = {fun1, fun2}; call(0, fun, 3, 4.5); return 0; } </code></pre> <p>And it produces errors:</p> <pre><code>/home/ivy/Desktop/CTests//funargs.c||In function ‘call’:| /home/ivy/Desktop/CTests//funargs.c|11|error: too many arguments to function ‘*(fun + (unsigned int)((unsigned int)which * 4u))’| /home/ivy/Desktop/CTests//funargs.c||In function ‘main’:| /home/ivy/Desktop/CTests//funargs.c|16|warning: initialization from incompatible pointer type [enabled by default]| /home/ivy/Desktop/CTests//funargs.c|16|warning: (near initialization for ‘fun[0]’) [enabled by default]| /home/ivy/Desktop/CTests//funargs.c|16|warning: initialization from incompatible pointer type [enabled by default]| /home/ivy/Desktop/CTests//funargs.c|16|warning: (near initialization for ‘fun[1]’) [enabled by default]| ||=== Build finished: 1 errors, 4 warnings ===| </code></pre> <p>I used a Code::Blocks to compile it.</p> <p>Its simple, when I dont have any arguments but with some, I got confused:</p> <pre><code>#include &lt;stdio.h&gt; #include &lt;stdlib.h&gt; typedef void (*VFUNCV)(void); void fun1() { printf("fun1\n"); } void fun2() { printf("fun2\n"); } void call(int which, VFUNCV* fun) { fun[which](); } int main() { VFUNCV fun[2] = {fun1, fun2}; call(1, fun); return 0; } </code></pre>
    singulars
    1. This table or related slice is empty.
    1. This table or related slice is empty.
    plurals
    1. This table or related slice is empty.
    1. This table or related slice is empty.
    1. This table or related slice is empty.
    1. This table or related slice is empty.
 

Querying!

 
Guidance

SQuiL has stopped working due to an internal error.

If you are curious you may find further information in the browser console, which is accessible through the devtools (F12).

Reload