私は lex input .l ファイルを持っています。このファイルには、一連のルールと、それらのルールが発生したときの関数定義が含まれています。
別のソース ファイル main.c からこのスキャナーを使用しています。
main.c では、生成された lex ファイルへの参照をまったく必要とせずに yylex() を呼び出すことができます。なぜこれが機能するのですか?cmake を使用していますが、lexer.c ファイルからオブジェクトが作成され、それが実行可能ファイルにリンクされていることに気付きました。それが機能するには、yylex() への外部参照が必要だと思っていたでしょう。
私の質問は、lex .l ファイルで使用するすべての関数の前方宣言を別のヘッダーで作成し、それを lex ファイルに含める必要があるかどうかです。さらに一歩進んで、これらの関数を lex ファイルの外部で定義し、インクルード ファイルを参照して使用する必要がありますか?