Is this legal?

Code:
struct Test
{
    void (*ptr)(void* p, ...);
};

void myfunction(void* p, int arg1, int arg2) {}

Test test = { myfunction };
In GCC, I get a warning:

warning: initialization from incompatible pointer type [enabled by default]
warning: (near initialization for 'test.ptr') [enabled by default]