我正在从 Bison 1.875 升级到 Bison 3.0.4 并希望向后兼容。
- 函数调用
yyparse(void *)
在 1.875 中有效,但在 3.0.4 中无效 - 函数调用
yyparse()
在 3.04 中有效,但在 1.875 中无效
Bison 输出一个 cpp 文件,其中包含#define YYBISON_VERSION "3.0.2"
我用来strcmp
确定实际版本是否是最新版本并决定使用哪个函数调用的行:
int ret = 0;
if(bisonVersionCheck < 0)
{
ret = yyparse(void *);
}
else
{
ret = yyparse();
}
但是,正如您将看到的,这是确定的运行时,因此编译器会抱怨他无能为力的函数调用。
我想要一个可以使用的宏,所以我可以使用预处理器指令来选择正确的函数调用。我在野牛文档中找不到这样的宏。
- 有人知道“__BISON_VERSION”看起来像宏吗?
- 有其他想法的人根据野牛版本进行正确的函数调用吗?