Этот код будет правильно скомпилирован, только если операторы const float
появятся где-то, кроме области видимости файла.
Это часть стандарта, по-видимому. Важно, чтобы все объявленные переменные области файла инициализировались с помощью константных выражений, а не выражений с постоянными переменными.
Вы инициализируете float 'b' значением другого объекта. Значение любого объекта, даже если оно определено как const, не является константным выражением в C.