Nokogumbo gem的C实现中的提交导致构建在Gentoo Linux上失败,但是,修改是次要的,不应该造成任何麻烦。不幸的是,我知道zilch旁边的C。
这是提交:
https://github.com/rubys/nokogumbo/commit/8b4446847dea5c614759684ebcae4c580c47f4ad
它只是将<>
替换为""
:
-#include <gumbo.h>
-#include <error.h>
-#include <parser.h>
+#include "gumbo.h"
+#include "error.h"
+#include "parser.h"
根据GCC docs,这不应该造成任何麻烦,因为它会回到以前的行为:
#include "file"
此变体用于您自己程序的头文件。它首先在包含当前文件的目录中搜索名为file的文件,然后在quote目录中搜索,然后搜索用于
<file>
的相同目录。您可以使用-iquote选项将目录添加到引用目录列表中。
不幸的是,虽然它与<>
编译得很好,但构建失败并显示""
:
compiling nokogumbo.c
nokogumbo.c:24:20: fatal error: parser.h: No such file or directory
#include "parser.h"
我想知道<>
和""
的行为方式在多大程度上取决于工具链,环境和其他设置。
非常感谢您的提示!
答案 0 :(得分:0)
重新安装&#34; gumbo&#34;在Gentoo框上修复了问题。显然,当地的安装混乱产生了这种奇怪的行为。
答案 1 :(得分:-1)
我检查了你的git存储库,我注意到你使用--std=c99
编译代码。我认为这可能会导致问题,因为我在C99
草案中找到了这个:
在实现定义中搜索指定的源文件 如果不支持此搜索,或者搜索失败,则 指令被重新处理,就像它读取
一样
#include <header>
因此,它意味着流程首先是实现定义,如果不支持则使用#include<>
模式。但这意味着如果它定义#include""
搜索当前目录,它将停止搜索#include<>
。