回答
是的,使用编译器编译你的简单测试程序。这是查看编译器是否可以找到头的最好也是最简单的方法。如果你硬编码#include搜索路径,你将不得不修改并适应不同的编译器。
同意;正如Jonathan Leffler所指出的那样,这就是Autoconf所做的,至少是一个有利的经验投票。 – 2010-03-01 05:12:35
GNU Autoconf suite通过运行测试编译来检查标头。只是测试文件'filename.h'的存在是相当简单的:
#include <filename.h>
int main(void){return 0;}
您可能更喜欢引号而不是尖括号。
使用以下程序,您可以找到头文件的存在。
#include<stdio.h>
main()
{
FILE * file;
if ((file = fopen("/usr/include/stdio.h", "r"))!=NULL)
{
fclose(file);
printf("true");
}
perror("err");
}
评论?为您正在搜索的文件固定名称。修复您要查找的文件的位置。在编译用于查找的程序时使用您正在查找的文件。在标准输出上打印状态,如果没有,则在标准错误条件下打印。不成功和失败返回不同的退出状态。使用main-C99的古老C定义需要'int main()'或'int main(void)',所以这必须是C89或更旧的代码。不幸的是,当你没有显式返回时,只有C99保证main()返回的零退出状态,所以退出状态是未定义的。 – 2010-03-02 15:12:47
这根本不起作用。 – 2015-12-10 13:23:18
- 1. 检查电子邮件是否存在的最佳方法
- 2. 以编程方式检测RubyGems.org是否关闭的最佳方法?
- 3. 检查网站文件夹是否存在的最佳方法是什么?
- 4. 检查PowerShell对象是否存在的最佳方法?
- 5. Python ftplib:检查文件是否已更改的最佳方法?
- 6. 以编程方式检查Oracle AQ队列是否存在
- 7. 以编程方式检查COM端口是否存在于C#
- 8. 检查Stackable文件系统是否以编程方式安装
- 9. 以编程方式检查是否使用CSS文件
- 10. C++,检查文件是否存在的最快方法?
- 11. 检查用户是否可以上传文件的最佳方法是什么?
- 12. 如果DLL/EXE文件使用authenticode签名,以编程方式检查的最佳方法是什么?
- 13. 检查DLL文件是否是C#中的CLR程序集的最佳方法
- 14. 检查是否以英文字典编程方式在C#
- 15. 以编程方式创建/编辑模板的最佳方法
- 16. 以编程方式检查shell脚本中失败的scp的最佳方式
- 17. 什么是以编程方式使用Gmail的最佳方式?
- 18. 什么是检查SQL Server 2005存储过程中是否存在文件的最佳方法?
- 19. 以编程方式在java中查找方法的开头
- 20. 有没有办法以编程方式检查是否打开Excel文件
- 21. 检查3个文本框是否为空的最佳方法
- 22. 最好的方法检查是否存在记录编辑器中的形式
- 23. 以编程方式创建拨号图像的最佳方法?
- 24. 以编程方式更改UIViewController视图NIB的最佳方法
- 25. 检查数据存储区中是否已存在数值的最佳方法
- 26. 检查值是否在多选列表中的最佳方法?
- 27. 检查apache的access.log文件的最佳方法是什么?
- 28. 什么是以编程方式检查C#中XML文件格式良好的最快方法?
- 29. 以编程方式检查在Windows上是否启用了IPv6
- 30. 如何以编程方式检查Zookeeper是否正在运行
您有文件名和包含目录列表。为什么不检查文件是否在其中? – 2010-03-01 02:59:09
@Nikolai:不仅仅是这样做的一个原因是,'标题'标题本身可能包含其他文件,并且很难通过检查它们是否全部存在来检查它所依赖的文件是否存在尝试编译。 – 2010-03-01 03:36:48
@Jonathan:我明白这一点。当然,这完全取决于项目的范围,但我会对'include'指令进行递归搜索。 – 2010-03-01 03:47:41