这里发生了什么?我得到了
必须使用' struct'标记以引用类型'节点'
的gx
和hx
行
typedef struct node {
char * fx; // function
node * gx; // left-hand side
char * op; // operator
node * hx; // right-hand side
} node;
我也试过
typedef struct node {
char * fx; // function
node * gx; // left-hand side
char * op; // operator
node * hx; // right-hand side
};
和
struct node {
char * fx; // function
node * gx; // left-hand side
char * op; // operator
node * hx; // right-hand side
};
和
typedef struct {
char * fx; // function
node * gx; // left-hand side
char * op; // operator
node * hx; // right-hand side
} node;
和
typedef struct treeNode {
char * fx; // function
treeNode * gx; // left-hand side
char * op; // operator
treeNode * hx; // right-hand side
} node;
我得到了所有这些错误。普通C中的正确语法是什么?
答案 0 :(得分:9)
在c中,您无法使用结构名称来引用struct
,您需要在名称前添加struct
,或者您可以typedef
,例如
typedef struct node node;
struct node
{
/* Whatever */
node *link;
};
答案 1 :(得分:4)
让我们看看第一个片段:
$scope.AddPost = function(){
console.log("This was called.");
var title = $scope.article.title;
var post = $scope.article.post;
var firebaseObj = new Firebase("https://yyear.firebaseio.com/Articles");
var fb = $firebase(firebaseObj);
fb.$push({ title: title,post: post,emailId: CommonProp.getUser() }).then(function(ref) {
console.log(ref);
//$location.path('/welcome');
}).then(function(ref) {
$('#createModal').modal('hide');
}, function(error) {
console.log("Error:", error);
});
};
在typedef struct node {
char * fx; // function
node * gx; // left-hand side
char * op; // operator
node * hx; // right-hand side
} node;
语句完成之前,{p> gx
和hx
出现在struct node
/ node
类型定义的中间。在此计划中,typedef
不是有效的类型名称,因为node
尚未结束(并且,与C ++不同,编写typedef
不会自动生成{ {1}}类型名称)。但是,此时struct node { ... };
是一个有效的类型名称(只要您将其用于指针类型),因此要声明node
和{{1}正确地说,你需要写:
struct node
答案 2 :(得分:1)
我这样做
struct node {
char * fx; // function
struct node * gx; // left-hand side
char * op; // operator
struct node * hx; // right-hand side
};
typedef struct node node;