三四个返回值的时候,我一般怎么写
你想“从函数里带回两个东西”。没有神兵利器。只有手工活。有人用引用。有人用指针。有人写一堆小结构体。还有人……开始写宏。你没听错。为了多返回值。真的有人写宏。当年没有 tuple 的日子那会儿还在 C
阅读全文你想“从函数里带回两个东西”。没有神兵利器。只有手工活。有人用引用。有人用指针。有人写一堆小结构体。还有人……开始写宏。你没听错。为了多返回值。真的有人写宏。当年没有 tuple 的日子那会儿还在 C
阅读全文那会儿还没有 C++11。我们写的东西更像 “C with classes”。也就是在 C 上面糊一层 class。项目不大。但麻烦一点都不少。尤其是日志。你总想写一个函数。什么都能塞进去。参数多少都
阅读全文很久以前。C++ 里想“用正则”,并不是一句 #include 就完事。你要么去翻 POSIX 的 regex.h。要么拉个 PCRE。要么用 Boost。然后开始跟编译选项、链接、版本兼容吵架。最尴
阅读全文很久以前。你写 C。你想要“随机”。你只有一个按钮。rand()。它来自 C 标准库。一开始也没打算让你拿它写抽奖、分流、风控。更多时候。是小游戏。是模拟。是“差不多就行”。然后我们就真的把它当成“随
阅读全文你写个小项目。代码不多。需求也不复杂。直到它上线。然后某天晚上。线上啪一下。你盯着日志发呆。崩在一个“回调”。你甚至没觉得自己写了什么高深东西。你只是。“想把一个能调用的东西传进去”。那些年,回调是怎
阅读全文那会儿你想要一张“用 key 快速查值”的表。标准库不给。只给你 std::map。要么你自己写一个。要么去翻各家编译器的私货。今天在你机器上能跑。明天换个编译器就报错。更惨的是。同事一更新工具链。线
阅读全文那会儿还没什么“智能指针”。你写的就是 C with classes。能跑就行。能上线就更行。资源这件事。基本靠自觉。new 之后。你得自己去把 delete 找回来。找不回来。就等着哪天线上给你脸色
阅读全文时间这东西。最喜欢伪装成“一个数字”。你看着它。觉得没啥。然后线上啪一下。很久以前。我们还没有那种“把单位写进类型里”的安全感。也没有一个统一的时间工具箱。时间就是 int。单位靠约定。约定靠注释。注
阅读全文如果你写过一点 C。你大概率相信过一句话。数组的长度。就在那对 [] 里。写着呢。不会丢。结果第一次做小项目上了线。啪。你会发现。长度不是“丢了”。是你从来没真正拥有过它。那是很早的年代。大家写的不是
阅读全文那会儿还没有 C++11。也没有 std::thread。更别提 std::async。你想并发。就去写 pthread。或者上 Boost。然后把“结果”塞回主线程。靠全局变量。靠输出参数。靠一堆锁
阅读全文在 C++11 之前。写 C++ 很像写 C。只不过多了个 class。那会儿没有 std::move。也没有右值引用这种东西。你想把一个对象传给别人。通常就一个动作。拷贝。对只写过 C 的人来说。拷
阅读全文我想先把时间拨回去。拨回到一个更野的年代。那会儿你也写模板。也会写一个 T。然后你盯着它发呆。这玩意到底是不是整数。能不能拷贝。是不是引用。是不是我想要的那个类型。你问得很认真。但编译器只回你一句。“
阅读全文那会儿还没有这些“把意图写进语法”的小工具。大家写的还是 C with classes。写着写着。项目就长大了。然后线上啪一下。你才发现。最贵的不是崩溃。是“它居然没按我想的跑”。那些年,覆写靠的是记
阅读全文那会儿你写一个“常量”。多半就是一行 #define。写上去。编译过。就当它永远不会变。直到有一天。它变了。而你是在凌晨两点才知道的。一个小项目,线上啪一下当年我们做过那种“小得不能再小”的服务。一个
阅读全文那会儿我们写 C。也写一点 C with classes。项目不大。胆子不小。我们总觉得。内存嘛。不就是一排字节。指针嘛。不就是一把钥匙。直到有一天。线上啪一下。不是逻辑错。是进程没了。还特别挑人。你
阅读全文有段时间。我们写程序。写着写着就会开始用线程。一个请求一个线程。或者一个线程池。那时候的痛点很朴素。我想要一个“全局变量”。但我只想让它对当前线程有效。别的线程别来碰瓷。那些年:没有“每线程一份全局”
阅读全文那是很多年前。办公室的灯。经常亮到半夜。我们写的 C++。其实就是 C。外加一点 class。那时候最响的一句话是。“能跑就行。”后来我才知道。有些东西。一旦“能跑”。就会跑去你没想到的地方。那会儿的
阅读全文十几年前。大家写 C。后来写 C with classes。代码里最常见的“类型”。就俩。int。double。数字一多。单位就开始飘。今天你写的是“500”。明天别人读成了“500”。然后线上啪一下
阅读全文那会儿我们写 C++。还是 “C with classes” 那味。项目不大。但线上一样会出事。出事的时候。你不会先怀疑字符串。你会先怀疑自己的人生选择。有一次半夜。线上突然开始找不到配置文件。日志里
阅读全文那会儿我们写 C++。很多人嘴上说 C++。手里其实还是 C。最多再加点 class。构造函数也一样。它看起来像“自动帮你把对象弄好”。但你真写过几天。就会发现它更像“手动装配流水线”。而且没有复用。
阅读全文你写下 p->foo()。看起来像一句话。像一句很普通的话。可在当年。这句话是很多人用 crash 堆出来的。而且那种 crash。通常还不在你写错的地方。“C++ makes it harder t
阅读全文那时候还没有“接口”这个词。大家写的更多是“约定”。写在邮件里。写在 README 里。写在某个老同事的脑子里。然后项目一大。约定就开始漏风。在没有纯虚函数的年代:大家怎么写“可扩展”的代码C 时代的
阅读全文异常这东西。在 C 的世界里。它一开始其实很朴素。函数失败了。就返回一个值。-1。或者塞个 errno。你再写一层。就再把这个值往上抛。一路抛到 main。人也跟着老了几岁。后来 C++ 来了。带着类
阅读全文那会儿我刚从 C 走到 C with classes。项目不大。人也不多。我们写代码的标准很简单。能跑。就算赢。直到有一天。同一份程序。在我机子上不炸。到了客户那台机器。啪一下。我去问原因。没人能一句
阅读全文有段时间。大家写“面向对象”。但代码看起来还是 C。一个 struct。再塞几根函数指针。能跑。也挺灵活。然后某天。 线上炸了。你去看 core dump。发现是一个空指针。指向一张你以为“永远不会空
阅读全文那是一个很老的坑。老到它比“现代 C++”还早。老到你第一次见到它。会怀疑:是不是我把语言学错了。它不报错。它也不崩。它只是很安静地。做了你没预期的事。当年没有“虚函数”这个词先把时间拨回去。那会儿很
阅读全文那些年。你写的是 C。写着写着。就写成了“带点 class 的 C”。编译器不怎么唠叨。IDE 也不怎么提醒你:这行代码危险。你要把一个东西当成另一个东西用。最顺手的,还是那一对括号。你写的时候很放心
阅读全文那会儿写 C++。大家都挺自信。尤其是刚把代码“改对”。编译通过。单元测试也绿了。你心里想。这事就算完了。然后线上给你回了一巴掌。不是崩溃。更讨厌。它“能跑”。只是行为不对。而且还很像“偶发”。你开始
阅读全文那时候写代码。大家更信指针。也更怕指针。你想写“通用代码”。比如你写了个小绘图工具。里面有圆。有矩形。还有些你自己临时加的形状。你只想写一段循环。让它们自己把自己画出来。在坑里长大的“多态”上世纪 8
阅读全文那时候大家刚学完 C。手里最顺的一招。就是“按值传”。不想碰指针。不想挨空指针的骂。更不想半夜被段错误叫醒。所以你很自然会想。把对象拷一份进函数里。我用我的。你用你的。互不干扰。听起来挺靠谱。后来 C
阅读全文