gpt4 book ai didi

被调用的对象不是函数或函数指针

转载 作者:行者123 更新时间:2023-11-30 15:23:44 26 4
gpt4 key购买 nike

我正在编写一个低通滤波器的程序。当我编译时,出现以下错误:

called object is not a function or function pointer

对于我用 double 声明的变量。知道为什么会发生这种情况吗?

#include <stdio.h>
#include <stdlib.h>
#include <math.h>

int main(int argc, char **argv) {
double omega1, omega2, omegac, T, dt;
int N, method;
FILE *in;

// Open the file and scan the input variables.
if (argv[1] == NULL) {
printf("You need an input file.\n");
return -1;
}
in = fopen(argv[1], "r");
if (in == NULL)
return -1;
fscanf(in, "%lf", &omega1);
fscanf(in, "%lf", &omega2);
fscanf(in, "%lf", &omegac);
fscanf(in, "%d", &method);

T = 3 * 2 * M_PI / omega1; // Total time
N = 20 * T / (2 * M_PI / omega2); // Total number of time steps
dt = T / N; // Time step ("delta t")

// Method number 1 corresponds to the finite difference method.
if (method == 1) {
int i;
double Voutnew = 0, Voutcur = 0, Voutprev = 0;

for (i = N; i != 0; i--) {
Voutnew = ((1/((1/((sqrt(2))(dt)(omegac))) + (1/((dt)(dt)(omegac) (omegac))))) * (((2/((dt)(dt)(omegac)(omegac))) - 1)(Voutcur) + (1/((1/((sqrt(2))(dt)(omegac))) - (1/((dt)(dt)(omegac)(omegac)))))(Voutprev) + Sin((omega1)(T)) + (1/2)(Sin((omega2)(T)))));
Voutcur = Voutnew; // updates variable
Voutprev = Voutcur; // passes down variable to next state
printf("%lf\n", Voutnew);
}
} else {
// Print error message.
printf("Incorrect method number.\n");
return -1;
}
fclose(in);
return 0;
}

这是我收到的错误列表:

In function 'main':
Line 38: error: called object '1.41421356237309514547462185873882845044136047363e+0' is not a function
Line 38: error: called object 'dt' is not a function
Line 38: error: called object 'dt' is not a function
Line 38: error: called object '1.41421356237309514547462185873882845044136047363e+0' is not a function
Line 38: error: called object 'dt' is not a function
Line 38: error: called object 'omega1' is not a function
Line 38: error: called object 'omega2' is not a function
Line 38: error: called object '0' is not a function

最佳答案

您需要乘法运算符

((sqrt(2))(dt)(omegac)

例如,这是错误的,您应该在我至少知道的所有编程语言中显式指定乘法运算符

sqrt(2) * dt * omegac

此外,使用太多括号会使代码很难阅读,所以不要这样做。

使用括号是错误消息的情况,因为

(dt)(omegac)

被解释为好像 dt 是一个函数,而 omegac 是传递给它的参数,并且由于 dt 不是函数,因此错误消息是有道理的。

这只是需要修复的代码的一小部分,如果我是你,我会将表达式拆分为子表达式,在你的大错误中并不容易看到错误。

Sin 的 undefined reference 是因为 c 区分大小写,没有名为 Sin 的函数,它是 sin

关于被调用的对象不是函数或函数指针,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/28663599/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com