18.1 借助编译器来提前发现错误