首页 > 解决方案 > Initializer element is not constant - C

问题描述

I'm getting two errors :
Initializer element is not constant in the 2nd last line below in the code
Expected declaration specifiers '...' before string constant in the last line

#define K 10.0
typedef double (*TFunc)(double);
double alpha,x;

double f(double x)
{
   return x*x;
}

double derive(TFunc f, const double x0)
{
    const double dx = 1.0e-6; // or similar
    double dy = f(x0+dx)-f(x0-dx);
    return dy/(2.*dx);   
}
double fp = derive(f, K);
printf("%lf\n",fp);

标签: cconstants

解决方案


您应该将要在执行期间首先运行的任何代码块添加到main函数中。在你的情况下,你应该把代码:

double fp = derive(f, K);
printf("%lf\n",fp);

变成一个main函数

int main() {
  double fp = derive(f, K);
  printf("%lf\n",fp);
}

确保stdio.h在文件开头包含库,因为您正在使用printf函数。另外,请确保在K某处定义常量。我根据上面的建议更新了您的代码,并且编译时没有错误或警告:

#include <stdio.h>

typedef double (*TFunc)(double);
double alpha,x;
double f(double x)
{
  return x*x;
}
double derive(TFunc f, const double x0)
{
  const double dx = 1.0e-6; // or similar
  double dy = f(x0+dx)-f(x0-dx);
  return dy/(2.*dx);   
}

int main() {
  const double K = 1.0;
  double fp = derive(f, K);
  printf("%lf\n",fp);
}


推荐阅读