解决clang"fatal error: 'stdio.h' file not found"问题

先看一下下面这个”hello world”程序

#include 

int main(void)
{
    printf("hello!\n");
    return 0;
}

在Windows下使用”gcc test.c”编译这个程序不会出现任何问题,但如果使用”clang test.c”编译,在控制台窗口就会报"fatal error: 'stdio.h' file not found",原因就在于clang本身并没有配备完整的工具链,解决方法是首先将MinGW的bin目录到添加系统环境变量中,然后在使用clang编译时添加"--target=i686-pc-mingw32"选项,因为在Windows下我使用的是Mingw-w64所以相应的就应该添加"--target=i686-w64-mingw32"选项。
如果你使用Vim + ale插件,会发现在Vim里面也存在这种情况,打开~/vimfile/bundle/ale/doc/ale-c.txt可以看到在默认情况下ale对clang开启的选项为'-std=c11 -Wall',因此只需在vimrc中写入

let g:ale_c_clang_options = '--target=i686-w64-mingw -std=c11 -Wall'

即可,如果你使用的不是Mingw-w64,而是官方原版的MinGW就写入

let g:ale_c_clang_options = '--target=i686-pc-mingw32 -std=c11 -Wall'

对于C++,则在vimrc中继续写入

let g:ale_cpp_clang_options = '--target=i686-w64-mingw -std=c++14 -Wall'

如果使用的是syntastic可以参考相应的帮助文档修改syntastic-c-clang_check选项,另外在Linux不存在上面的问题。

你可能感兴趣的:(Vim,C,C++)