c++
安柏霖
zhihu : https://www.zhihu.com/people/toughbro
<无限法则>--LeadProgrammer
<天涯明月刀>--Engine Architect
<Ghost Recon:Advanced Warfighter2>
<EndWar>
展开
-
jetbrain account不能访问的问题
账号一直不能登录,登录https://account.jetbrains.com/ 显示DNS_PROBE_FINISHED_NXDOMAIN 错误(chrome浏览器) 折腾了清dns cache以及换dns server等方法; 最后发现是hosts里面被加了一个: 0.0.0.0 https://account.jetbrains.com/ 可能是本地使用jetbrain服务器被加的。。。 去掉就好了; ...原创 2022-04-10 22:59:16 · 3258 阅读 · 1 评论 -
[c++]enum class
团队升级c++17有一段时间了,一些个语言特性在逐步的实践中开始使用; 最近聊到的,并且落到编程规范中的就是enum class; 传统enum 传统的enum,我个人是非常喜欢的,在当年阅读quake代码的时候,也看见各种位操作,觉得很酷; enum有两个点非常的好: 值本身有一个名字,可读性非常的好 值本身正常情况下是做int,非常的轻量级 难得到兼顾性能和可读性的东东; 在c++11开始的enum class,可以说在把enum大型项目里的问题进行了改进; 传统的enum有这几个问题: 起名字彼原创 2022-03-06 11:36:37 · 3133 阅读 · 0 评论 -
[c++]project reference and link
visual sutio 2022, c++的一个小问题; 当项目a对项目b(编译结果是一个dll)产生依赖的时候(在project dependency中设置),我们默认是a在project properties里面设置了link library dependencies,a在编译的时候会link b的lib; 我遇到的情况就是不会。。。进而出现unresolved external symbol 最后直接看link的命令行以及修改vcprojct文件来解决; check link command lin原创 2022-02-04 10:08:06 · 3568 阅读 · 0 评论 -
[c++]nodiscard的实战案例
团队换到c++17也有一段时间了,对于[[nodiscard]]attribute也是更多的看resharper的提示,加了下; 总体上觉得是一个类似const,表达下设计意图,但是对于其实用性,还是无感。 最近团队代码里出现了一个问题,倒是清晰地表达了[[nodiscard]]的用途: 代码: f32 GetUnitTime(f32 time) const { const float duration = GetEndTime() - GetStartTime(); if( duratio原创 2022-01-21 08:38:25 · 2578 阅读 · 0 评论 -
代码overview/architect工具research
随着项目开发的深入,一方面规模在不断地变大,一方面各个小组的leader可以覆盖的范围也在变大。 这里能对代码有一个全局的掌控就非常重要了。 在本blog已经多个地方谈到这个问题了,比如:https://blog.csdn.net/toughbro/article/details/88774873 简单讲,我们需要充分的控制复杂度,将之压倒最低,那么项目的全面质量都会有提升。 那么一个好的能把代码...原创 2019-10-19 18:07:32 · 356 阅读 · 0 评论 -
c++类型隐式转换的危险
很久之前团队关掉了隐式转换的warning(因此相应的treat warning as error)就也关掉了。 这个中间有着非常多的可怕的点,我觉得c++根本不应该把这个功能弄进来,都需要显式的转换; 要知道一个这样的错误需要多长时间的排查。 历史上出现问题的次数虽然不多,但是每一个都非常的难以排查,但这个其实默认就可以处理掉。 enum EAType { ECT_a, ECT_b, EC...原创 2019-10-11 21:46:18 · 774 阅读 · 0 评论 -
free&delete&delete[]
最近一些工作里需要处理些内存的东东,需要把delete,free,delete[]分清楚。 跟了下几个汇编delete汇编化是:call destructor.call delete(void*)->free+一些判断 free就是free delete[]是调相应数量的destructor,delete(void*)so:所原创 2011-06-09 17:06:00 · 2937 阅读 · 1 评论 -
std::limits
像产生一个nan的float这样的事情,可以这里用这里的函数,挺好的,还第一次注意stl的这个部分。float f = std::numeric_limits::quiet_NaN(); 判断的时候都很熟悉了,就是_isnan();原创 2011-06-09 08:28:00 · 1986 阅读 · 0 评论