C 错误:表达式必须是指向完整对象类型的指针
我正在尝试用C编写MPI程序。当我尝试编译它时,请使用:C 错误:表达式必须是指向完整对象类型的指针,c,compiler-errors,mpi,C,Compiler Errors,Mpi,我正在尝试用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); sc
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] );
// ^^ ^
而不是方形制动器
int N=(int)atof[argv[1]];
^^ ^^
你必须用括号
int N=(int)atof(argv[1]);
^^ ^^
另外,您确定需要使用函数atof
而不是atoi
,将结果分配给int
类型的对象吗?atof[argv[1]-->atof(argv[1])您知道atof
中的f
代表浮点吗?如果你想转换成整数,为什么不使用atoi
?另外,如果你出错,额外的校对总是有帮助的。哦,天哪,我终于找到问题了。这是我的错!谢谢这只是一个模板,我必须使用atof(),谢谢。哦,谢谢!是我的错,是打字错误。还是谢谢你。