سؤال

لدي هذا في ملف 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";

غير صالح.

مرخصة بموجب: CC-BY-SA مع الإسناد
لا تنتمي إلى StackOverflow
scroll top