你是什​​么意思我没有宣布退出'在适用范围?

时间:2017-04-29 00:05:42

标签: c++ g++

我正在尝试编译旧的C ++代码库,而不是我编写的,并且我收到以下错误:

'exit' was not declared in scope.

给我错误的代码位于文本的顶部,如下所示:

%{

#include "AppHdr.h"
#include "libutil.h"
#include "levcomp.h"
#include <cstdio>
#include <cstdlib>

int yylex();

extern int yylineno;

void yyerror(const char *e)
{
    std::fprintf(stderr, "%s:%d: %s\n", lc_desfile.c_str(), yylineno, e);
    // Bail bail bail.
    std::exit(1);
}

显然,此问题与makefile调用的编译器(g++)中的更改有关。我相信我应该通过在文件中放置一个#include <cstdlib>来解决这个问题,这就是我一直在尝试的......但无论在哪里我把它放在%{之前,其余的#include,在yyerror()函数本身内 - 没有任何效果。

发生了什么,以及如何解决此问题以及此类错误,最好是尽可能少地篡改代码库?

编辑:哦,这是我g++ --version的输出:

g++ (Ubuntu 5.3.1-14ubuntu2) 5.3.1 20160413
Copyright (C) 2015 Free Software Foundation, Inc.
This is free software; see the source for copying conditions.  There is NO
warranty; not even for MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.

如果重要,这是一个.ypp文件。

0 个答案:

没有答案