C++ 中文周刊 第100期
C++ 中文周刊 第100期
资讯
标准委员会动态/ide/编译器信息放在这里
编译器信息最新动态推荐关注hellogcc公众号 本周更新 2023-02-08 第188期
关于标准委员会的吵架动态,可以看 https://www.zhihu.com/people/mick235711 的动态。这里就不转发了
文章
360发布了他们的代码安全规范,还是值得一看的,UB描述了很多
一段到处都在传播的代码
#include <iostream>
int main() {
while(1)
;
}
void unreachable() {
std::cout << "hello world\n";
}
clang会打印hello world而gcc/msvc不会,为啥??
简单来说是没用到的死循环直接给删了,然后没有ret,直接跳到下一个函数了
这也是UB的一种。感兴趣的可以点进去看看
-O3 -flto 性能起码提升5%,后续引入PGO继续探索。PGO还是很值得研究的,针对业务来优化效率更高
static_assert(0 == std::rank_v<void>);
static_assert(0 == std::rank_v<int>);
static_assert(1 == std::rank_v<int[]>);
static_assert(0 == std::rank_v<int[0]>);
static_assert(1 == std::rank_v<int[1]>);
static_assert(1 == std::rank_v<int[42]>);
static_assert(2 == std::rank_v<int[][2]>);
static_assert(2 == std::rank_v<int[1][2]>);
static_assert(3 == std::rank_v<int[1][2][3]>);
数组的维度,这玩意和向量的秩英文名一样啊。。
如何实现?
#include <type_traits>
template<class T>
struct prev;
template<class T, int N>
struct prev<T[N]> : std::type_identity<T> {};
template<class T>
struct prev<T[]> : std::type_identity<T> {};
template<class T>
constexpr auto return_rank()
{
if constexpr (::std::is_array_v<T>) {
return return_rank<typename prev<T>::type>() + 1;
}
return 0;
}
template<class T>
constexpr auto rank_v = return_rank<T>();
QML_DISABLE_DISK_CACHE=1 加速 QML编译
省流:可以
又是WinAPI,我看不懂不多逼逼
浮点数比较,很烦
bool cmpEq(double a, double b,
double epsilon = 1e-7, double abstol = 1e-12)
{
if (a == b) { // 判断inf用的,傻逼inf
return true;
}
double diff = std::fabs(a - b);
double reltol = std::max(std::fabs(a),
std::fabs(b)) * epsilon;
return diff < reltol || diff < abstol;
}
家人们还是看看远处的boost实现吧 https://www.boost.org/doc/libs/1_81_0/boost/test/tools/floating_point_comparison.hpp
寄存器,用eax, ebx, ecx, edx, ebp, esp, esi, edi, r8, r9, r10, r11, r12, r13, r14, r15 ,rax eax宽度区别
传参数,用 rdi, rsi, rdx, rcx, r8 r9, 放不下放栈上
来个例子
long myfunc(long a, long b, long c, long d,
long e, long f, long g, long h)
{
long xx = a * b * c * d * e * f * g * h;
long yy = a + b + c + d + e + f + g + h;
long zz = utilfunc(xx, yy, xx % yy);
return zz + 20;
}
rbp 大家也都懂,也会优化掉,因为可以根据rsp算出来。-fno-omit-frame-pointer
可以保留
看不懂
书评。没看到书没啥说的
测了一些软件用O3编译二进制大了点,但性能都有提升
视频
最近没啥看的
开源项目需要人手
- asteria 一个脚本语言,可嵌入,长期找人,希望胖友们帮帮忙,也可以加群384042845和作者对线
- pika 一个nosql 存储, redis over rocksdb,非常需要人贡献代码胖友们, 感兴趣的欢迎加群294254078前来对线
新项目介绍/版本更新
- PocketPy 嵌入式python实现,有点意思
- Boost.Mustache 说不定能进 mustache模版
- quill v2.7.0 released - Asynchronous Low Latency C++ Logging Library 之前也聊过,版本更新
- CTHASH (Compile Time Hash) 编译期 sha实现
- CoFSM 基于协程的状态机
- kelcoro 协程库
- Cryptography library for modern C++.
看到这里或许你有建议或者疑问或者指出错误,请留言评论! 多谢! 你的评论非常重要!也可以帮忙点赞收藏转发!多谢支持!
如果有疑问评论最好在上面链接到评论区里评论,这样方便搜索,微信公众号有点封闭/知乎吞评论
This site is open source. Improve this page.
相关文章
- C++ 中文周刊 第69期
- C++ 中文周刊 第71期
- C++ 中文周刊 第74期
- 深入理解C++11_c++ string char
- C++ 中文周刊 第81期
- c++的链表-C++实现简单链表
- C++ 中文周刊 第91期
- C++ 中文周刊 第96期
- C++ 中文周刊 第95期
- C++ 中文周刊 第99期
- C++ 中文周刊 第105期
- 【开发环境】Ubuntu 中使用 VSCode 开发 C/C++ ① ( 安装中文扩展 | 安装 C/C++ 扩展 )
- C++ 中文周刊 第108期
- 这款编译器能让Python和C++一样快:最高提速百倍,MIT出品
- C++STL——map与set介绍及使用
- codeblocks c++11 pthread详解程序员
- c/c++中变量的声明和定义深入解析
- C++中const的用法详细总结
- C++键盘记录程序代码