[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