这段特殊的代码在C中运行良好,但在编译为C++程序时会出现编译错误.
#include<stdio.h>
#include<stdlib.h>
int main(){
int (*b)[10];
b = calloc(20, sizeof(int));
return 0;
}
Run Code Online (Sandbox Code Playgroud)
C++编译中的错误是:
test.cpp: In function ‘int main()’:
test.cpp:9:28: error: invalid conversion from ‘void*’ to ‘int (*)[10]’ [-fpermissive]
Run Code Online (Sandbox Code Playgroud)
任何想法可能是什么原因?
在C语言中,您可以隐式地从/向其他指针类型的void指针强制转换,但在c ++中不允许它,并且您需要显式地强制转换它:
b = (int (*)[10])calloc(20, sizeof(int));
Run Code Online (Sandbox Code Playgroud)
归档时间: |
|
查看次数: |
2591 次 |
最近记录: |