[ECOS] programming technic about the macro?

sandeep sandeep@codito.com
Mon Oct 28 23:20:00 GMT 2002


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



More information about the Ecos-discuss mailing list