如何将结构体传递给 yacc 文件中的函数?

发布于 2024-08-13 18:29:24 字数 457 浏览 3 评论 0原文

我的 yacc 文件中有这个。

var_declaration : type_specifier ID ';' {$2->args = ""; $2->value = 0; $2->arraysize = 0; $2->type = "variable";}

上面的一切都有效。

我想将这个添加到其中。

fn($2);

从函数内部,我想做这样的事情。

 fn(struct symtab sp)
    {
    sp->value = 0;
    }

但是当我尝试编译该程序时,出现以下错误:

错误:“->”的类型参数无效 (有“struct symtab”)

I have this in my yacc file.

var_declaration : type_specifier ID ';' {$2->args = ""; $2->value = 0; $2->arraysize = 0; $2->type = "variable";}

Everything above works.

I want to add this to it.

fn($2);

From inside the function, I want to do stuff like this.

 fn(struct symtab sp)
    {
    sp->value = 0;
    }

But when I try to compile the program I get this error:

error: invalid type argument of ‘->’
(have ‘struct symtab')

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(1

寄意 2024-08-20 18:29:24

我想你的函数应该是

fn(struct symtab* sp)

而不是

fn(struct symtab sp)

and 顺便说一句,因为 $2 是一个 联合 我认为这

$2->args = ""; $2->value = 0; $2->arraysize = 0; 

是不正确的。
并且

$2->type = "variable";

无效。

I guess your function should be

fn(struct symtab* sp)

instead of

fn(struct symtab sp)

and by the way, as $2 is a union I don't think that

$2->args = ""; $2->value = 0; $2->arraysize = 0; 

is correct.
And

$2->type = "variable";

is not valid.

~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文