0

私のプログラムは Linux マシンでは正常に動作しますが、IBM でコンパイルすると動作yy_scan_stringしません。宣言または定義する必要がありますyy_scan_stringか?

 File : "file.l"

 %{

 #nclude <iostream>

 #include <cstring>

 bool st = false;
 %}

 %%

  .([.][fF][1-9][0-9][Kk])$ { st = true; }

  . { st = false; }

  %%

  int main()

  {

      const char *fName = "check.f9k";

      char *elem = new char[strlen(fName) + 1];

      sprintf(elem, "%s\n", fName);

      yy_scan_string(elem);
      yylex();

      std::cout<<"\n ST : "<<st<<"\n";
      return 0;
  }

  int yywrap() { return 1; }

コンパイル:

lex file.l

g++ -o outfile lex.yy.c -ll

lex.yy.c: In function 'int main()': lex.yy.c:131: error: 'yy_scan_string' was not declared in this scope

IBM マシンでこのエラーを解決するにはどうすればよいですか?

4

1 に答える 1

1

yy_scan_stringは の一部ですがflex、従来の の一部ではありませんlex。あなたの「IBM マシン」には AT&T lex がインストールされていると思います。(それもあったかもしれませんflex。)

于 2013-10-28T01:34:57.250 に答える