如何避免 C++ 编译失败?

在这里插入图片描述

C++ “条条大路通罗马”

使用 C++ 几十年后,就慢慢掌握了 C++ 中“条条大路通罗马”的原理。任何事情都有多种解决方案,反之,造成编译失败的原因也是多种多样。本篇博客野心不小,因为我想试去厘清一些避免 C++ 编译错误的方法。但正本清源,要规避错误,首先要了解错误的源头。

愚蠢的做法:把失败简单归咎于编译器

的确,编译器有可能导致编译失败。不过,触发编译器的推手是你——程序员,做了一些不正确的操作。当程序员提供C++程序,编译器无法转换为机器代码时,编译失败。

说得更明白些?让我举一个编译失败的典型例子:

void ConvertStringToPasswordForm(char password[])

{
   

      while (*password != '\0') *password++ = '*';

}

这个函数的驱动程序如下

int main(int argc, char** argv)

{
       

      char* password  = "MyTopSecretPasswordPublishedInABlog:-)";

      ConvertStringToPasswordForm(password);

      std::cout << "Password :: " << password << std::endl;

}

错误提醒信息说得很清楚:

error C2664: ‘void ConvertStringToPasswordForm(char [])’: cannot convert argument 1 from ‘const char *’ to ‘char []’

所以这是一个 const 问题,于是你想当然地把 driver 改成:

int main(int argc, 
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值