【发布时间】:2021-11-27 04:06:45
【问题描述】:
当我在一行中初始化一个指向结构变量的指针时,我得到error: expected expression,但是如果我在没有声明的情况下定义了变量,它就可以工作。我想在一行中定义所有结构指针,而不先进行前向声明,因为如果没有,那么我的文件会变得很长。
关于如何解决这些问题有什么建议吗?还是没有办法规避这个问题?
...
//a Node class is defined before, similar to a Node in a linked list
struct Node *buildast(struct Node *t) {
int tag = node_get_tag(t);
switch (tag) {
//i dont want to keep declaring my variables likes below
struct Node *root;
struct Node *everything_else;
case NODE_translation_unit:
//To fix my issue, I declared my variables before
root = node_alloc_str_copy(AST_ROOT, node_get_str(t));
everything_else = node_get_kid(t, 0);
node_add_kid(root, everything_else);
return buildast(everything_else);
case NODE_definition:
//i want to define my struct pointert to a Node in
//one line like below but get an error
//when I try to use the below variable later, I get an
//undeclared identifier to 'child'
struct Node *child = node_get_kid(t, 0); //this line gives an error
if (node_get_num_kids(child) <= 1) {
node_add_kid(t, child);
return buildast(child);
}
...
【问题讨论】: