我试图用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/