我试图用C编写MPI程序。当我尝试编译它时,请使用:

mpicc -o hw2_b1 hw2_b1.c

发生错误:
int main(int argc, char **argv){
MPI_Init(&argc, &argv);
int N=atof[argv[1]];
int *A, *Ap;
A=malloc(sizeof(int)*(N*N));
Ap=malloc(sizeof(int)*(N*N));

initialize_data(A, Ap, N);

scatter_data(A, N);
mask_operation(A, N, Ap);
gather_results(Ap, N);

MPI_Finalize();
return 0;

}
这是我第一次使用atof()函数,所以我不知道出了什么问题,即使我将N的类型更改为double,该错误仍然存​​在。
有什么帮助吗?谢谢。
错误粘贴在下面:
hw2_b1.c(140): error: expression must be a pointer to a complete object type
    int N=(int)atof[argv[1]];
               ^
hw2_b1.c(140): error: expression must have integral type
        int N=(int)atof[argv[1]];
                        ^
compilation aborted for hw2_b1.c (code 2)

最佳答案

atof是一个函数,您必须在参数列表中使用方括号( ),而不是索引运算符[ ]。将N=atof[argv[1]];更改为N=atof(argv[1]);。除此形式外,此atof将字符串转换为浮点数据类型(float)。您的目标数据类型为int。使用atoi将字符串转换为整数数据类型。像这样修改您的代码:

int N = atoi( argv[1] );
//         ^^         ^

关于c - 错误: expression must be a pointer to a complete object type,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/34929720/

10-11 11:45