I would think that your variable (a) does not meet the requirement of the & operator (The operand of the address-of operator can be either a function designator or an l-value that designates an object that is not a bit field and is not declared with the register storage-class specifier.)
If so the fix that was pushed is not a full and final fix, although it extends - but also changes - the scope of the macro. Regards, Tim. > On 27 Sep 2022, at 18:19, Jernej Turnsek <jernej.turn...@gmail.com> wrote: > > Hi Alan, > > I understand that it should support more variables, but the fact is that > the code, which used to compile, doesn't anymore. > > Maybe others will have the same problem, when porting from Linux to NuttX? > > Jernej > >> On Tue, Sep 27, 2022 at 2:55 PM Alan C. Assis <acas...@gmail.com> wrote: >> >> Hi Jernej, >> >> There is a discussion about it here: >> >> https://github.com/apache/incubator-nuttx/pull/6779 >> >> The issue with previous implementation was it only worked for integers >> variable. >> >> BR, >> >> Alan >> >>> On 9/27/22, Jernej Turnsek <jernej.turn...@gmail.com> wrote: >>> Hi, >>> >>> when compiling LuaJIT on NuttX with new UNUSED macro I get following >> error: >>> >>> LuaJIT/src/lj_frame.h:70:61: error: lvalue required as unary '&' operand >>> 70 | #define setframe_gc(f, p, tp) (setgcref((f)->fr.func, (p)), >>> UNUSED(tp)) >>> >>> What was the reason to change UNUSED macro from: >>> >>> # define UNUSED(a) ((void)(1 || (a))) >>> >>> to >>> >>> # define UNUSED(a) ((void)(1 || &(a))) >>> >>> Thanks, >>> Jernej >>> >>