鉴于以下内容: -
#include <stdlib.h>
#include <stdio.h>
#include "SOM.h"
int N = 10;
int FEATURES = 5;
struct _Node{
int x, y;
double w[];
};
struct Node **nodes;
void main(){
init();
}
void init(){
int i, j;
Node tmp;
nodes = malloc(N * sizeof(Node*));
for(i=0; i<N; i++){
nodes[i] = malloc(N * (2*sizeof(int) + FEATURES*sizeof(double)));
for(j=0; j<N; j++){
nodes[i][j]->x = i; //Troublesome line
nodes[i][j]->y = j; //Troublesome line
nodes[i][j]->w = {0.0, 0.1}; //Troublesome line
}
}
}
void clean(){
//
}
Run Code Online (Sandbox Code Playgroud)
标题: -
#ifndef SOM
#define SOM
typedef struct _Node Node;
void init();
void clean();
#endif
Run Code Online (Sandbox Code Playgroud)
我在编译时收到以下内容: -
SOM.c: In function ‘init’:
SOM.c:25:7: error: invalid use of undefined type ‘struct Node’
SOM.c:25:15: error: dereferencing pointer to incomplete type
SOM.c:26:7: error: invalid use of undefined type ‘struct Node’
SOM.c:26:15: error: dereferencing pointer to incomplete type
SOM.c:27:7: error: invalid use of undefined type ‘struct Node’
SOM.c:27:15: error: dereferencing pointer to incomplete type
SOM.c:27:24: error: expected expression before ‘{’ token
Run Code Online (Sandbox Code Playgroud)
但是,我(据我所知)定义了_Node结构并给它起了假名Node.我想我误解了这个错误.有人能够解释什么是错的.我本身并不是在寻找代码修复,而是更多地解释了我出错的地方.
问候
这条线错了:
struct Node **nodes;
Run Code Online (Sandbox Code Playgroud)
它需要是:
Node **nodes;
Run Code Online (Sandbox Code Playgroud)
要么:
struct _Node **nodes;
Run Code Online (Sandbox Code Playgroud)
但不是两者的混合物,正如你现在所拥有的那样.
| 归档时间: |
|
| 查看次数: |
3772 次 |
| 最近记录: |