On Fri, 2006-02-17 at 19:01 +0530, Mukund JB. wrote: > Dear All, > > I have seen a macro like this in the Linux kernel sources in > include/linux/usb.h line no: 1090. > > #define usb_dotoggle(dev, ep, out) ((dev)->toggle[out] ^= (1 << (ep))) > > I did not understand how it works? > I have written a small usermode program to test this. > > #define x 1 > #define y 2 > #define macro() (x = y) > main() > { > int abc = macro(); > printf("abc = %d\n",abc); > } > > This code results in a compile error. > test.c:9: error: invalid lvalue in assignment. See the pre-processor o/p of this program and you'll get the answer! :) (sorry about the disclaimer! :P) > > Why? > > Regards, > Mukund Jampala > > > -- > Kernelnewbies: Help each other learn about the Linux kernel. > Archive: http://mail.nl.linux.org/kernelnewbies/ > FAQ: http://kernelnewbies.org/faq/ > **************** CAUTION - Disclaimer ***************** This e-mail contains PRIVILEGED AND CONFIDENTIAL INFORMATION intended solely for the use of the addressee(s). If you are not the intended recipient, please notify the sender by e-mail and delete the original message. Further, you are not to copy, disclose, or distribute this e-mail or its contents to any other person and any such actions are unlawful. This e-mail may contain viruses. Infosys has taken every reasonable precaution to minimize this risk, but is not liable for any damage you may sustain as a result of any virus in this e-mail. You should carry out your own virus checks before opening the e-mail or attachment. Infosys reserves the right to monitor and review the content of all messages sent to or from this e-mail address. Messages sent to or from this e-mail address may be stored on the Infosys e-mail system. ***INFOSYS******** End of Disclaimer ********INFOSYS*** -- Kernelnewbies: Help each other learn about the Linux kernel. Archive: http://mail.nl.linux.org/kernelnewbies/ FAQ: http://kernelnewbies.org/faq/