The code is illegal in C.
initializer element is not constant
C99 -- 6.7.8 Initialization
All the expressions in an initializer for an object that has static storage duration shall be
constant expressions or string literals.
The is valid in C++.
C++ Standard States in 3.6.2 Initialization of non-local objects:
Objects with static storage duration (3.7.1) shall be zero-initialized (8.5) before any other initialization takes place.