> > >>>Just went through the archives.... > >>> > >>> I tried to recreate the compile-failure (was some time ago > since > >>> it > >>> happened) when using min()/max() in a struct but it happily > compiled it > >>> so (thankfully) you are correct, just need to use min()/max(). > :) > >>> > >>> Richard Knutsson > >>> > >>>Do you mean to say that you were able to compile when the macros were > used inside struct? > >>>Im still not able to get that to happen... > >>> > >>>I tried that change in linux-2.6/fs/lockd/mon.c > >>> > >>>static struct rpc_procinfo nsm_procedures[] = { > >>>[SM_MON] = { > >>> .p_proc = SM_MON, > >>> .p_encode = (kxdrproc_t) xdr_encode_mon, > >>> .p_decode = (kxdrproc_t) xdr_decode_stat_res, > >>> .p_bufsiz = max(SM_mon_sz, SM_monres_sz) << 2, > > Will work since both SM_mon_sz and SM_monres_sz are compile-time > constants, not true? > > [ ... snip ... ] So... The patch actually modifies the macro's last line in kernel.h - _x < _y ? _x : _y; }) + __min(_x, _y); }) But what I am unable to understand is why is the compiler unhappy with * _x < _y ? _x : _y; })* and happy with new macro been called internally *__min(_x,_y);* Mehul