Leaving variables uninitialized in certain cases helps to achieve top-notch performance. Sometimes compiler thinks that variable may be used uninitialized (whereas it may not) and emits a warning.
To silence these warnings there is UNINIT_VAR() macro:
#if defined(_lint) || defined(FORCE_INIT_OF_VARS) || \
|
defined(__cplusplus) || !defined(__GNUC__)
|
#define UNINIT_VAR(x) x= 0
|
#else
|
/* GCC specific self-initialization which inhibits the warning. */
|
#define UNINIT_VAR(x) x= x
|
#endif
|
There are a few problems with this macro:
1. It always emits "x= 0" for non-gcc
2. It always emits "x= 0" for C++ code
It means leaving variable uninitialized makes sense only in C code compiled by gcc.
Regarding __cplusplus: there is a reference to gcc bug which was fixed 3 years ago. Probably it is time to remove it?