Ошибка компиляции "initializer element is not constant" - C (СИ)
Формулировка задачи:
Здравствуйте. Наткнулся(ладно, каюсь - сам написал) на вот такой код:он не компилируется в связи с тем что:я несколько непонимаю почему так? ведь x - константа, а 1.0 разделить на константу - тоже константа. то есть, я какбы константу инициализирую константой, однако gcc имеет инное мнение по этому поводу. полагаю дело в static, т.к. если убрать спецификатор const, то ошибка остается. а вот так работает:гугление выдает только информацию, касательно того как static, действует на область видимости переменной.
#include <stdio.h>
static const int x = 23;
static const double y = 1.0 / (double)x;
int main() {
printf("x = %d, y = %lf\n", x, y);
return 0;
}gcc -O0 -g3 -Wall -c -fmessage-length=0 -o test.o ..\test.c ..\test.c:4:1: error: initializer element is not constant const double y = 1.0 / (double)x; ^
#include <stdio.h>
int main() {
const int x = 23;
const double y = 1.0 / (double)x;
printf("x = %d, y = %lf\n", x, y);
return 0;
}Решение задачи: «Ошибка компиляции "initializer element is not constant"»
textual
Листинг программы
static const double y = 1.0 / (double)x;
Объяснение кода листинга программы
В данном коде происходит объявление и инициализация константной переменной типа double с именем y. Значение переменной y вычисляется как результат деления единицы на значение переменной x. Тип данных переменной x не указан в данном фрагменте кода, но предполагается, что это целочисленный тип. Также стоит отметить, что в данном коде не происходит никаких действий, кроме инициализации переменной y.