解决vscode+clang+mingw64下的<float.h>兼容性问题

半城伤御伤魂 提交于 2020-08-10 08:22:40

本人c语言纯萌新一枚,编程环境是vscode+clang+mingw,安装的时候是直接把mingw的文件无冲突合并到LLVM里的,参照:https://www.cnblogs.com/esllovesn/p/10012653.html

 

今日在完成c语言老师布置的作业的时候写了以下代码:

#include<stdio.h>
#include<float.h>

int main(void)
{
  double dv = 1.0 / 3.0;
  float fv = 1.0 / 3.0;
  printf("%.4f %.4f\n", dv, fv);
  printf("%.12f %.12f\n", dv, fv);
  printf("%.16f %.16f\n", dv, fv);
  printf("%d %d\n", FLT_DIG, DBL_DIG);
 return 0; }

结果很意外的是,无论是直接插件run code还是F5编译均提示编译失败:

In file included from exercises5.c:2:
In file included from C:\Program Files\LLVM\lib\clang\9.0.0\include\float.h:31:
C:\Program Files\LLVM\x86_64-w64-mingw32\include\float.h:28:15: fatal error: 'float.h' file not found

 

可是其他编译器似乎并没有这个问题,于是在谷歌娘搜到一个结果,大意为新版本的LLVM和旧版本mingw的float.h不兼容,导致两者无法共同发挥作用,需要把新的float.h合并过来

 

那么解决方案如下:

 

这个网址中的内容全部复制后覆盖到LLVM\x86_64-w64-mingw32\include\下的float.h中,这样mingw中的float.h就和新版本clang的float.h兼容了。

 

那么现在问题就解决完毕了。 .c文件正确编译并输出了以下内容:

0.3333 0.3333
0.333333333333 0.333333343267
0.3333333333333333 0.3333333432674408
6 15

 

 

撒花~ *\(^ ▽ ^)/*

标签
易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!