2016-08-08 20 views
-1

フレックスプログラムで文字列(cout)を印刷しようとすると、プログラムがクラッシュします。私は、G ++で生成されたファイルをコンパイルflex cout文字列クラッシュ

%{ 
    #include <iostream> 
    #include <string> 

    using namespace std; 
%} 

%option noyywrap 

%% 
. {string str = "hi"; cout << str;} 
%% 

int main(){ 
    yylex(); 

    return 0; 
} 

: 私.Lファイルには、次のようになります。私のフレックスバージョンは2.5.35です。

私が単にcout << "hi";と書くと、プログラムはクラッシュしません。

私は間違っていますか?

+0

あなたの 'g ++'バージョンは何ですか? 'flex 2.5.35'と' g ++ 4.9.2'の問題を再現できません –

+0

私のg ++​​バージョンは4.9.3です –

+0

クラッシュログはありますか? – theFunkyEngineer

答えて

0

フレックスバージョン2.5.39で動作するようです。

{string str = "hi"; cout << str;} 

の翻訳は変更されていない場合

あなたが前処理G ++ -Eで生成されたファイルと出力で見ることができます確認してください。

+0

翻訳中にコマンドが変更されていません –

+0

生成したファイルをダウンロードしました.g ++ 4.8.4とclang ++ 3.6でコンパイルして正常に動作します。それは、入力にある数だけ "blubhi"を出力します。 valgrindは、flexバッファに関連するメモリリークの一部しか報告しません。だから、あなたのコードは私のために大丈夫です。 – Franck

関連する問題