On Thu, Dec 02, 2021 at 07:25:11PM +0100, Paolo Amoroso wrote: > On Thu, Dec 2, 2021 at 6:45 PM Douglas McIlroy > <douglas.mcil...@dartmouth.edu> wrote: > > > > define(bump,`define(`$1',incr($1))')dnl > > define(counter,0)dnl > > counter > > bump(`counter')counter > > bump(`counter')counter > > Thanks Douglas, your solution works great. In the context of the > Assembly macros I mentioned in an > earlier message I'd add something like this to your code: > > define(`mymacro', > `Lbump(`counter')counter > mvi a, $1') > > mymacro(`3')
You probably want it to look more like: define(`mymacro', `L`'bump(`counter')counter: mvi a, $1') > > But the output is not what I'd expect: > > 0 > 1 > 2 > [blank lines] > Lbump(counter)2: In your definition, you did not separate `L' from `bump', so m4 tried to expand the `Lbump' macro (undefined, so output as-is), then stripped the nested quotes. > mvi a, 3 > > Instead I need: > > L2: > mvi a, 3 With my definition, I added a `' after L to explicitly separate what is normal text from what I want to be a later macro call at time `mymacro' is expanded. -- Eric Blake, Principal Software Engineer Red Hat, Inc. +1-919-301-3266 Virtualization: qemu.org | libvirt.org