كيفية تمرير الهيكل إلى وظيفة في ملف yacc؟
سؤال
لدي هذا في ملف 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;
}
ولكن عندما أحاول ترجمة البرنامج، أحصل على هذا الخطأ:
خطأ: وسيطة نوع غير صالح من "->" (لديك "بنية Symtab")
المحلول
أعتقد أن وظيفتك يجب أن تكون
fn(struct symtab* sp)
بدلا من
fn(struct symtab sp)
وبالمناسبة، كما 2 دولار هو اتحاد لا أعتقد ذلك
$2->args = ""; $2->value = 0; $2->arraysize = 0;
صحيح. و
$2->type = "variable";
غير صالح.
لا تنتمي إلى StackOverflow