c
C - longjump / setjump
众所周知,longjump + setjump是try-catch的鼻祖 setjump的作用 保存当前执行上下文到 std::jmp_buf 类型的变量。std::longjmp 函数稍后可用此变量恢复当前执行上下文。即在调用
C++ - exit / quick_exit / _Exit 的区别
从C++ 11开始就有了两种exit函数,这两个的区别将在这里做一次记录。 std::exit 该函数在头文件 <cstdlib> 钟定义
Linux - Note (Things You Never Should Do in the Kernel)
在面向新开发人员的 Linux 内核编程邮件列表中,人们会提出一些常见问题。几乎每次提出这些问题时,回答总是“不要这样做!”,让困惑的提问者想知道他们闯入了什么样的奇怪开发社区。这是偶尔发布的系列文章中的第一篇,旨在解释为什么做这些事情通常不是一个好主意。然后,为了弥补这些指责,我们打破了所有的规则
C++ - 类型操作
forward std::forward 是一个函数模板,通常与右值引用(rvalue references)结合使用。它的主要作用是实现完美转发(perfect forwarding),确保在函数模板中能够保留传入参数的值类别(左值或右值)。这个特性在泛型编程和模板代码中非常重要,可以避免不必要的
C++ - 功能特性测试
标准中为 C++11 和之后引入的 C++ 语言和程序库的功能特性定义了一组预处理器宏。标准有意使之成为检测这些功能特性是否存在的一种简单且可移植的方式。 检查 __has_cpp_attribute( 属性记号 ) 检查你的编译器是否支持某些属性(某些特性/语法/宏)…… 可以在#if #elif
C - calloc的意义?
C里面有malloc和calloc,通常情况下大部分人使用的都是malloc,这两个的作用几乎就是等价的,但是为什么会有calloc这个东西呢? 其实这里面有几个要点: 错误与欺骗 auto m = malloc(INT_MAX * INT_MAX); 上面这个代码显而易见会报错提示说溢出了,而下面
C++ - initializer_list意义、使用
统一初始化 C++11引入一个小概念:为了使 std::initializer_list 工作,引入了一个叫“统一初始化”,又名“大括号初始化 { }”。 #include <iostream> #include <vector> #include <array> int main() {