1

我得到错误:

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

我按照这个问题的例子。

我在 Visual Studio 2008 上编译。

问题是什么?

4

2 回答 2

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);
于 2012-08-16T18:45:23.137 回答
0

你开始你的代码

#include "my_header.h"

当然,使用您的接口文件的任何名称?正如所写,编译器没有任何办法知道什么RHandle意思。

请不要总结代码。错误通常出现在您“知道*正确”的部分,而在摘要中省略。

于 2012-08-16T18:48:37.640 回答