最近写代码的时候, 因为一个bug调了半天,
最后发现只是因为 if 语句括号里面写成了 =
浪费了好久时间, 然而gcc居然没有任何警告提示
于是乎上网搜索发现 有一款编译器 clang, 据说十分好用
就yum安装试了试
等我用它编译代码的时候, 便有一种相见恨晚的感觉
安装
yum list | grep clang

yum -y install clang*
等待安装完成
使用
写几行代码
#include<stdio.h>
int main()
{
int a = 0;
if( a = 1 )
{
printf("hello world\n");
}
return ;
}
可以发现, 首先if 语句 括号里面用了 = , 其次没有写返回值
我们先用gcc 编译一下
没有任何警告提示, 直接运行, 发现与我们想要的结果不一致
使用clang编译
先编写一个Makefile
main:hello.c
clang $^ -o $@ -g
clean:
rm -f main
编译

哇! 多么人性化的提示啊! 让人身心愉悦!
本文通过一个简单的编程错误,展示了Clang编译器相较于GCC的优势。作者在代码中误将if语句中的条件判断符号“==”写成了赋值符号“=”,而GCC未能给出警告。使用Clang进行编译时,则能够清晰地指出这一错误,同时还能提醒开发者关于函数缺少返回值的问题。
2569

被折叠的 条评论
为什么被折叠?



