先看一下下面这个”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不存在上面的问题。