我有一個lex輸入.l文件,其中包含一組規則和函數定義,以便在遇到這些規則時使用。我應該爲lex函數創建一個頭文件嗎?
我使用來自另一個源文件這款掃描儀,main.c中
main.c中,我可以調用函數yylex(),而不必有什麼樣的基準來我生成的文件法。爲什麼這個工作?我正在使用cmake,並且我注意到它從我的lexer.c文件中創建了一個對象,並將其鏈接到我的可執行文件。我原以爲我需要一個外部參考yylex(),但爲了工作。
我的問題是我應該爲我在lex .l文件中使用的所有函數在單獨的頭文件中創建前向聲明,並將其包含在lex文件中?更進一步,我應該在lex文件之外定義這些函數,並通過引用include文件來使用它們嗎?
您應該啓用警告並關注任何和所有編譯器消息。編譯器會告訴你在哪裏丟失了哪些聲明。通常,您定義的任何可公開訪問的函數都應該在某個頭文件中聲明,並且該頭文件應該包含在使用該函數的任何文件中。 – 2013-03-22 23:01:02