I've never heard of "optional" arguments to a C routine. A variable number as with int printf( char *t, ... ), but not optional.
If you're going to access a vararg function using Win32::API, you would need to do something hinky like create one API mapping for each number of args you are likely to use and then call the appropriate variant:
use Win32::API;
$function2 = Win32::API->new(
'mydll', 'sum_integers', 'II', 'I',
);
$function3 = Win32::API->new(
'mydll', 'sum_integers', 'III', 'I',
);
$function4 = Win32::API->new(
'mydll', 'sum_integers', 'IIII', 'I',
);
$function5 = Win32::API->new(
'mydll', 'sum_integers', 'IIIII', 'I',
);
$function6 = Win32::API->new(
'mydll', 'sum_integers', 'IIIIII', 'I',
);
Not pretty, but it ought to at least work.
Examine what is said, not who speaks -- Silence betokens consent -- Love the truth but pardon error.
"Science is about questioning the status quo. Questioning authority".
In the absence of evidence, opinion is indistinguishable from prejudice.
|