错误C2275 RHandle:非法使用此类型作为表达式

时间:2012-08-16 18:38:22

标签: c++ c visual-studio

我收到错误:

  

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。

有什么问题?

2 个答案:

答案 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的含义。

请不要总结代码。错误通常出现在你“知道*是正确的部分,并且不在摘要中。