编译错误(调用的函数不是对象)

标签 c

我正在尝试编写泊松方程的代码。我已经编写了代码,但它给出了“被调用函数不是对象或函数指针”的编译错误。

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

int main(int argc, char* argv[])
{
    int U[101][101];
    int Unew[101][101];
    double Nx = 100, Ny = 100;
    float tol = 0.00001;
    float L = 2.0;
    int i, j;
    float pi = 3.14;
    float Dx, Dy, x, y;
    Dx = (L / Nx) + 1;
    Dy = (L / Ny) + 1;
    for(i = 1; i <= 101; i++) {
        for(j = 1; j <= 101; j++) {
        }
    }
    x = (i - 1) * Dx;
    y = (j - 1) * Dy;
    for(i = 1; i <= 101; i++) {
        for(j = 1; j <= 101; j++) {
            U[i][j] = 0.0;
        }
    }
    for(i = 1; i <= 101; i++) {
        U[i][1] = 0.0;
    }
    for(j = 1; j <= 101; j++) {
        U[101][j] = 0.0;
    }
    for(i = 1; i <= 101; i++) {
        U[i][j] = 0.0;
    }
    double iter;
    double residual;
    for(iter = 1; iter <= 10000; iter++) {
        for(i = 2; i <= 101; i++) {
            for(j = 2; j <= 101; j++) {
                Unew[i][j] = (Dy * Dy * (U[i - 1][j] + U[i + 1][j]) + Dx * Dx * (U[i][j - 1] + U[i][j + 1]) -
                              Dx * Dx * Dy * Dy * (cos(pi * Dx) * sin(pi * Dy) + pi * pi * cos(pi * Dx) * sin(Dy))) /
                             (2.0(Dx * Dx) + (Dy * Dy));
            }
        }
        if(Unew[i][j] - U[i][j] <= tol)
            break;

        else {
            iter = iter + 1;
        }
        U[i][j] = Unew[i][j];
    }
}

报错

Unew[i][j]=(Dy*Dy*(U[i-1][j]+U[i+1][j])+Dx*Dx*(U[i][j-1]+U[i][j+1])-Dx*Dx*Dy*Dy*(cos (pi*Dx)*sin(pi*Dy)+pi*pi*cos(pi*Dx)*sin(Dy)))/(2.0(Dx*Dx)+(Dy*Dy));

called function is not an object or function pointer

最佳答案

错误位于行尾附近:

(2.0(Dx*Dx)+(Dy*Dy))  

您需要在 2.0 和括号之间添加一个运算符。 我猜你缺少一个*

注意:

我用gcc编译它并得到了更清晰的错误消息:

error: called object '2.0e+0' is not a function

关于编译错误(调用的函数不是对象),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/33516807/

相关文章:

android - 如何理解这个定义宏?

c - 将所有处理器能力专用于一项任务

c - 伪终端段错误

c - 将 '/' 与 long double 一起使用?

c - 如何确保跨平台的浮点大小相同?

将 ngx_chain_t 转换为缓冲内存

c - 缓冲区溢出跳转到禁用的功能

c - 如何将外部构建的 C 库链接到 Ada 默认运行时数学服务(sin、cos 等)?

C - Unix 管道,close() 影响输出?

c - 使用 strncopy 显示输出