On 7/29/2010 8:34 PM, Shao Miller wrote:
> #define MAXARGS 10
> typedef unsigned int zlink_args[MAXARGS];
>
> int zlink(int(int, ...), int, unsigned int *);
> int zlink(int bar(int, ...), int flags, unsigned int *list) {
> return 12;
> }
>
> unsigned int *buildlist(zlink_args list, ...) {
> /* ... */
> return list;
> }
>
> int foo(int bar, ...) {
> return 5;
> }
>
> #define LINKX(routine,flags,list, ...) \
> (zlink((routine),(flags),buildlist((list), __VA_ARGS__)))
>
> int main(void) {
> zlink_args mylist;
> int w, x, y, z;
>
> w = x = y = z = 10;
> return LINKX(foo, (1<< 3)& (1<< 4), mylist, w, x, y, z);
> }
I'll probably do something like this, although I want to hide the
zlink_args stuff in the macro. Thanks.
|