c - 初始化元素不是常量 - C

标签 c constants

我收到两个错误:
代码中最后第二行的初始化元素不是常量
最后一行字符串常量之前应有声明说明符 '...'

#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);

最佳答案

您应该将在执行过程中首先运行的任何代码块添加到 main 函数中。在您的情况下,您应该输入代码:

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

进入main函数

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

由于您使用的是 printf 函数,因此请确保在文件开头包含 stdio.h 库。另外,请确保您在某处定义了常量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);
}

关于c - 初始化元素不是常量 - C,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/55266341/

相关文章:

c - 结构元素的内存分配

c - 用于通过 wifi radio 向其范围内的设备发送广播数据包的套接字程序

c++ - 为什么 const 类成员必须是静态的才能得到适当的优化?

Java常量和静态修饰符

c++ - 具有 const 成员的类构造

c - 在 Win32 应用程序中使用 C 而不是 C++ 从 URL 读取 XML

c - RGB888(24位)转PNG/JPEG图像算法

C - 重新分配失败

c++ - 可以将互斥锁功能标记为 const

java - 静态导入文件或静态导入单个项目