0

flex++ を使用してプログラムを作成しようとしていますが、コンパイルしようとするたびにエラー メッセージが表示されます。

FlexLexer.h: そのようなファイルまたはディレクトリはありません

ただし、そのヘッダーは flex の include フォルダーにあります。私は c 用の lex プログラムをコンパイルするのに問題はありませんが、flex++ を使用した c++ の場合、方法が見つからないようです。すでに flex を何度もダウンロードしましたが、OS に問題があるかどうかなどわかりません。私のOSはWindows 10です。ありがとう

4

1 に答える 1

0

インクルードは、それがどのように機能するかを理解すれば、非常に簡単です。

ファイルを含めるいくつかの異なる方法を見てみましょう。

#include "FlexLexer.h"

引用符は、コンパイル中のファイルと同じフォルダーでファイル FlexLexer.h を探すようにコンパイラーに指示します。それだけです。他のどこにも見えません。

引用符を括弧に変更すると、次のようになります。

#include <FlexLexer.h>

これは、最初に同じフォルダーで FlexLexer.h を探すようにコンパイラーに指示しますが、見つからない場合は、インクルード パスのリストを調べてそこでも探します。

VisualStudio を使用していると仮定すると、インクルード パスのシステム リスト ([ツール] > [オプション] > [プロジェクトとソリューション] > [VC++ ディレクトリ] を参照) とインクルード パスのプロジェクト リスト ([ソリューション エクスプローラー] でプロジェクトを右クリックし、[プロパティ] > [VC++ ディレクトリ] を参照) の両方があります。 )。これらのリストは両方ともトラバースされます。

最後に、サブディレクトリ修飾子をインクルードに追加することもできます。

#include "Win\FlexLexer.h"

また

#include <Win\FlexLexer.h>

ご想像のとおり、どちらの例でも現在のディレクトリの下でパスが検索され、後の例ではインクルード パス リストの下でもパスが検索されます。とにかく、ファイルが最初に見つかったときに検索が停止し、コンパイラがそれを使用します。したがって、ヘッダーがある場合は、異なるライブラリで名前が重複することに注意してください!

于 2015-10-08T05:10:53.933 に答える