Это может произойти, потому что вы смешиваете файлы C ++ и C вместе в одном проекте.Поэтому, если вы включаете y.tab.h
в файл .cpp
, убедитесь, что в нем есть extern "C" { ... }
.Вот так:
extern "C"
{
#include "y.tab.h"
}
Обновление: Из вашего комментария я понял, что y.tab.c
- это y.tab.cc
сейчас.Это приводит к ошибке времени ссылки.Это можно исправить, сделав оба файла C ++ (или C).Или изменив объявление yylval
в y.tab.h
на
#ifdef __cplusplus
extern "C" YYSTYPE yylval;
#endif