我收到错误:
C2275 RHandle:非法使用此类型作为表达式
...当我编译它时:
int main(){
int i,j;
float** tree;
tree = (float**)malloc(15 * sizeof(float*));
for( i = 0; i < 15; i++)
tree[i] = (float*)malloc(2 * sizeof(float));
for(i = 0; i < 15; i++)
for( j = 0; j < 2; j++)
tree[i][j] = 2;
RHandle h = create_reprVectorsTree(tree, 8, 2); // error at this line
// ...
}
我的界面如下所示:
struct reprVectorsTree;
#ifdef __cplusplus
extern "C" {
#endif
typedef struct reprVectorsTree * RHandle;
RHandle create_reprVectorsTree(float **, int , int );
void free_reprVectorsTree(RHandle);
float* work_decode(RHandle , int *, int);
#ifdef __cplusplus
}
#endif
我按照this question中的示例。
我正在编译Visual Studio 2008。
有什么问题?
答案 0 :(得分:3)
只是猜测,但如果将其编译为C89,则不能在范围中间声明变量。
int main(){
int i,j;
float** tree;
RHandle h;
tree = (float**)malloc(15 * sizeof(float*));
for( i = 0; i < 15; i++)
tree[i] = (float*)malloc(2 * sizeof(float));
for(i = 0; i < 15; i++)
for( j = 0; j < 2; j++)
tree[i][j] = 2;
h = create_reprVectorsTree(tree, 8, 2);
答案 1 :(得分:0)
您是否使用
启动了代码?#include "my_header.h"
当然,使用您的界面文件的名称?如上所述,编译器无法知道RHandle
的含义。
请不要总结代码。错误通常出现在你“知道*是正确的部分,并且不在摘要中。