This is the mail archive of the gcc-help@gcc.gnu.org mailing list for the GCC project.


Index Nav: [Date Index] [Subject Index] [Author Index] [Thread Index]
Message Nav: [Date Prev] [Date Next] [Thread Prev] [Thread Next]
Other format: [Raw text]

Re: how to implement this ?


On Mon, Jan 07, 2013 at 03:09:31PM +0000, Andrew Haley wrote:
> On 01/07/2013 05:11 AM, horseriver wrote:
> > On Mon, Jan 07, 2013 at 02:31:19PM +0000, Andrew Haley wrote:
> >> On 01/07/2013 04:46 AM, horseriver wrote:
> >>> hi:
> >>>
> >>>   how to implement this assignment by MACRO?
> >>>   int a,b,c ;
> >>>   
> >>>   ((a==0)?b:c)=8;
> >>
> >> This is for help with GCC, not general C coding help.
> >>
> >> *((a==0) ? &b : &c) = 8;
> >>
> >> But this is really horrible code.  I wouldn't do it.
> > 
> > thans!
> >   
> >   why gcc report that error ?
> >   
> >   gcc can translate "  ((a==0)?b:c)=8 " into if-else sentence .
> > 
> >   wht is the reason ï
> 
> Please supply the test case and the error message.
> 

ok

here is this code : 

#define INPUT_KEYCODE(dev, scancode) ((dev->keycodesize == 1) ? ((u8*)dev->keycode)[scancode] : \
			((dev->keycodesize == 2) ? ((u16*)dev->keycode)[scancode] : (((u32*)dev->keycode)[scancode])))

and here is the callee code :

        unsigned int keycode ;
	
    	INPUT_KEYCODE(dev, scancode) = keycode;

        dev is a struct , scancode is a unsigned int

and gcc report error is :

        error: lvalue required as left operand of assignment

thanks!

> Andrew.
> 
> 


Index Nav: [Date Index] [Subject Index] [Author Index] [Thread Index]
Message Nav: [Date Prev] [Date Next] [Thread Prev] [Thread Next]