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 に答える