gpt4 book ai didi

c - 我应该为 lex 函数创建一个头文件吗?

转载 作者:太空宇宙 更新时间:2023-11-03 23:30:57 25 4
gpt4 key购买 nike

我有一个 lex 输入 .l 文件,其中包含一堆规则以及遇到这些规则时的函数定义。

我正在使用来自另一个源文件 main.c 的扫描仪

在 main.c 中,我可以调用 yylex() 而无需对生成的 lex 文件有任何类型的引用。为什么这行得通?我正在使用 cmake,我注意到它从我的 lexer.c 文件中创建了一个对象,并将其链接到我的可执行文件。我原以为我需要一个对 yylex() 的外部引用才能工作。

我的问题是,我是否应该在单独的 header 中为我在 lex .l 文件中使用的所有函数创建前向声明,并将其包含在 lex 文件中?更进一步,我是否应该在 lex 文件之外定义这些函数,并通过引用包含文件来使用它们?

最佳答案

您可以毫无问题地调用 yylex(),因为它是一个 int 函数。所以从技术上讲,您不需要原型(prototype)(尽管这不是正确的 C99 或 C1x 行为)。

为所有外部(公共(public))类型、变量和函数准备一个头文件总是是个好主意。您不是必须将它包含在您的 lex 源文件中,但这样做是个好主意(如果没有别的,检查您的声明是否正确)。您绝对应该在任何使用 lex 函数的文件中包含标题 it。

关于c - 我应该为 lex 函数创建一个头文件吗?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/15580694/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com