- 博客(3)
- 收藏
- 关注
原创 define中#和##以及__VA_ARGS_
经常看到别人写的代码中define有特殊操作符#和##。接下来就让我们看看他们代表的具体意思:(1)#假如希望在字符串中包含宏参数,ANSI C允许这样作,在类函数宏的替换部分,#符号用作一个预处理运算符,它可以把语言符号转化程字符串。例如,如果x是一个宏参量,那么#x可以把参数名转化成相应的字符串。该过程称为字符串化。例如:#incldue <stdio.h>#define PSQR(x) printf("the square of" #x "is %d.\n",(x)*(x))
2021-02-25 15:53:01 401
原创 C++ typename的起源与用法
起因近日,看到这样一行代码:typedef typename __type_traits<T>::has_trivial_destructor trivial_destructor;虽说已经有多年C++经验,但上面这短短一行代码却看得我头皮发麻。看起来它应该是定义一个类型别名,但是typedef不应该是像这样使用么,typedef+原类型名+新类型名:typedef char* PCHAR;可为何此处多了一个typename?另外__type_traits又是什...
2021-02-23 14:13:09 230
原创 0x5f375a86魔法数字
0x5f375a86属于一个魔法数字。它来自一个传奇算法(平方根倒数速算法),此算法最早被认为是由约翰·卡马克所发明,发明时这个值为0x5f3759df,后来由Lomont通过暴力穷举找到这个更优值,但后来的调查显示,该算法在这之前就于计算机图形学的硬件与软件领域有所应用,如SGI和3dfx就曾在产品中应用此算法。由来此算法最早由Gary Tarolli在SGI Indigo的开发中使用。虽说随后的相关研究也提出了一些可能的来源,但至今为止仍未能确切知晓此常数的起源。这个引擎的源代码里包括一个反
2021-02-05 17:59:07 5860
空空如也
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人