- android - 多次调用 OnPrimaryClipChangedListener
- android - 无法更新 RecyclerView 中的 TextView 字段
- android.database.CursorIndexOutOfBoundsException : Index 0 requested, 光标大小为 0
- android - 使用 AppCompat 时,我们是否需要明确指定其 UI 组件(Spinner、EditText)颜色
我试图摆脱 gcc 在我尝试编译我的 bison 和 flex 文件时抛出的警告:
: In function ‘yy_init_buffer’:
:1675: warning: implicit declaration of function ‘fileno’
我想这样做的原因是因为我正在尝试向我正在参加的类(class)提交作业,但我只能提交“parser.y”和“scanner.l”文件并且它会远程获取编译。问题是:如果有警告(出于某种原因)它会被视为错误,并且因为我无法控制编译器标志,所以我无法让它消失。我在 Internet 上看到了一些关于相同问题的问题,但是所提到的解决方案都不适合我。
编译器使用以下标志:
bison -d -o parser.c parser.y
flex -i -o scanner.c scanner.l
gcc -std=c99 -pedantic -o test_parser *.c
我使用的是 Mac OSX,所以当我编译时它没有给我任何警告,所以我猜这是 linux 发行版所特有的。这是我拥有的每个文件的 header 部分,以便您了解我已经尝试过的内容:
扫描仪.l
#define _POSIX_SOURCE 1
//#define _GNU_SOURCE
#include <stdio.h>
#include <stdlib.h>
# include "parser.h"
解析器.y
#include <stdio.h>
#include <stdlib.h>
int yylex (void);
void yyerror (char const *);
真的很感谢这里的任何帮助。
最佳答案
传统的答案是,我相信, self 回答中列出的那个:手动声明fileno
.
我通常的做法(也是我认为最常见的解决方案)是添加 -D_XOPEN_SOURCE=700
到我的 gcc 标志。 (700 比声明 fileno
所需的大,但有时我会使用其他 Posix 功能。)另一种方法是设置 _POSIX_C_SOURCE
。 . _POSIX_SOURCE
已弃用,但它仍然有效。
这些需要是编译器选项而不是 #define
s 在你的 flex 输入文件中,因为在生成的 flex 代码中,#include <stdio.h>
在用户指定的序言之前插入,并且需要在首次使用任何标准库头文件之前定义功能测试宏。 (有关更多信息,请参阅 man feature-test-macros 和/或 the Posix specification。)
由于这在您的编译环境中是不可能的,因此您需要使用变通方法。如前所述,一种是手动声明 fileno
在你的序言中。
另一种解决方法是避免调用 fileno
通过指定 %option never-interactive
,它告诉 flex 生成一个扫描器,如果输入是终端,它不会尝试修改其行为。 %option always-interactive
也可以,但是由于扫描仪不会在交互式环境中使用,因此这是不必要的开销。这些工作是因为 fileno
仅用于调用 isatty
(这是 unistd.h
中的一个 Posix 函数)以决定是否激活交互式处理。如果您告诉 flex 输入始终或从不交互,则不需要此测试。 (如果您指定 fileno
选项以避免使用 stdio 进行输入,则还需要 read
。但您不需要也不应该。)
我有点惊讶您类(class)的编译环境在编译步骤中没有包含适当的功能测试宏定义。它应该这样做,您可以将我的建议转达给监督构建工具的任何人。
关于c - 摆脱警告 : implicit declaration of function ‘fileno’ in flex,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/46213840/
我想在不使用函数 m 中的循环的情况下加快计算并获得结果.可重现的例子: N require(rbenchmark) > benchmark(m(r, N), + m1(r, N
关闭。这个问题是opinion-based 。目前不接受答案。 想要改进这个问题吗?更新问题,以便 editing this post 可以用事实和引文来回答它。 . 已关闭 9 年前。 Improv
我正在尝试使用 Cython。我使用 setup.py 并构建,而不是让 pyximport 执行此操作。但是,每次我导入模块时,似乎都会调用 pyximport 。 Pyximport 构建失败,一
考虑两个案例 case1 和 case2 以及两个方法 method1 和 method2。假设方法 1 解决案例 1,方法 2 解决案例 2。现在,我有一个程序可能以 case1 或 case2 结
我怎样才能摆脱 CA2202 警告(CA2202:Microsoft.Usage:对象“compressedStream”可以在方法“Compression.InternalDecompress(by
我在这段代码中得到 NP_NULL_ON_SOME_PATH_FROM_RETURN_VALUE final Integer id = Ints.tryParse(idString); FailRea
我的 eclipse 中有 Java WebService 代码。我用过@WebService @Webmethod、@XmlElements、@XmlType、@XmlAccessorType 现在
在我正在编写的基于 Sprite 的游戏中,二维网格中的每个字段都包含一堆 Sprite 。大多数情况下,最重要的是最重要的。 在游戏的规则模块中,我有很多这样的代码: public boolean
在 Java 中,我必须设置一个带有值的 POJO 类。然而,要决定使用哪个 setter 函数,我必须取决于 if 条件。我当前的代码如下所示: // Code written in a funct
关闭。这个问题需要details or clarity .它目前不接受答案。 想改进这个问题吗? 通过 editing this post 添加细节并澄清问题. 关闭去年。 Improve this
所以我最近接触到了C++中所谓“令人厌恶的函数类型”的怪诞之处(据我所知源自这篇论文: https://www.open-std.org/jtc1/sc22/wg21/docs/papers/2015
我正在研究配置 QDialog。它有几个类别(General、Appearance 等),当用户点击它们时会加载它们。每个类别都有自己的页面。这些页面本身就是独立的类(每个都有自己的 ui、cpp 和
我一直在开发 Vb.Net应用程序最近,我试图使它尽可能轻量级(即,使二进制文件尽可能小)。 我已经完成了所有琐碎的工作,但是在使用 ILDasm 浏览二进制文件时,我注意到它有一个 My names
An easy way to get rid of *everything* generated by SBT?要求一个简单的方法来清理从 sbt 生成的所有文件,但没有找到。我会要求一个艰难的。我如
如何摆脱默认的 ANTLR 识别错误? 我想用我自己的错误类而不是 ANTLR 的错误来写另一条消息。 我的意思是是否有可能扩展某些 ANTLR 错误类以显示我自己的消息? 更清楚地说,我不想在控制台
使用 woocommerce 的订单面板时,我注意到使用搜索执行了不必要的查询。这是对 Woocommerce 文件(/includes/data-stores/class-wc-order-data
我有一个包含列的大数据框,例如: ID, time, OS, IP 该数据帧的每一行对应一个条目。在某些 ID 的数据框中,存在多个条目(行)。我想摆脱那些多行(显然,对于相同的 ID,其他属性会有所
当我运行测试时,我得到如下代码: objc[8845]: GC: forcing GC OFF because OBJC_DISABLE_GC is set 它还会污染我运行的子流程的输出。我如何摆脱
在 ie8 上,状态栏下方有一个绿色进度指示器,可能表示基于某处某个静态长度值的下载进度。不幸的是,由于“现代”动态 JavaScript、ajax 调用等的性质,该指示器经常会变得困惑,并且栏保持在
我现在正在学习 MVVM,但我了解的东西很少(这里有很多但很少..): 是否每个模型都可能(通过 VM)暴露给 View 有一个 VM? 例如,如果我有一个 Contact 和 Address 实体并
我是一名优秀的程序员,十分优秀!