avr-libc-dev
[Top][All Lists]
Advanced

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

Re: [avr-libc-dev] Can pgmspace.h __LPM_xxx__ macros become inline fn's?


From: Theodore A. Roth
Subject: Re: [avr-libc-dev] Can pgmspace.h __LPM_xxx__ macros become inline fn's?
Date: Thu, 30 Sep 2004 14:00:03 -0700 (PDT)

On Thu, 30 Sep 2004, Bill Somerville wrote:

> Is there any reason why the LPM macros in avr/pgmspace.h cannot be
> reimplemented as inline functions?
>
> E.g.:
>
> __inline__
> uint8_t
> __LPM_classic__( uint16_t addr )
> {
>    uint8_t result;
>    __asm__
>         (
>                "lpm" "\n\t"
>                "mov %0, r0" "\n\t"
>                : "=r" (result)
>                : "z" (addr)
>                : "r0"
>                );
>    return result;
> }
>
> This avoids warnings in C with -pedantic compiler switch, makes the code
> leagal in C++ (it is an error with -pedantic switch in C++).

Those seem like pretty good reasons for switching to inline functions to
me.

If no one comes up with a strong reason against this, I have no
major objections.

My only (very weak) objection is that I've found that gdb can not step
over an inlined function. That makes debugging a bit of a pain some
times.

Although, other advantages are type checking and the ability to step
through an inline function in the debugger when you need to see what it
is doing.

One nit: should the function definition be "static __inline__ ..."
instead of just "__inline__ ..."?

---
Ted Roth
PGP Key ID: 0x18F846E9
Jabber ID: address@hidden




reply via email to

[Prev in Thread] Current Thread [Next in Thread]