This is the mail archive of the ecos-discuss@sources.redhat.com mailing list for the eCos 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: programming technic about the macro?


Hi Qiang,


#define HAL_READ_UINT16_STRING( _register_, _buf_, _count_)             \
    CYG_MACRO_START                                                     \
    cyg_count32 _i_;                                                    \
    for( _i_ = 0; _i_ < (_count_); _i_++)                               \
        (_buf_)[_i_] = ((volatile CYG_WORD16 *)(_register_))[_i_];      \
    CYG_MACRO_END

in the macro the tempory variable **_i_** has been declared, so if this
macro has been called twice inside one function will it cause any variable
redefinition (_i_)  problem?e.g.

main()
{
   HAL_READ_UINT16_STRING();
   HAL_READ_UINT16_STRING();
}
There won't be any problem because in the code in question, the scopes of two _i_ are different.

if you look at packages/infra/current/include/cyg_type.h, you shall find --

#define CYG_MACRO_START do {
#define CYG_MACRO_END } while (0)


--
regards
sandeep
--------------------------------------------------------------------------
"My pants just went on a wild rampage through a Long Island Bowling
Alley!!"
-- Zippy the Pinhead
--------------------------------------------------------------------------


--
Before posting, please read the FAQ: http://sources.redhat.com/fom/ecos
and search the list archive: http://sources.redhat.com/ml/ecos-discuss


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