发布时间:2020-04-08 18:29:01
文章背景:之前在上家公司时,某个模块大量使用此种方法,代码的可读性令人发指,可扩展性也不好。今天偶然联想到这个知识点,还是记录一下用法,一门方法之所以存在,必然有它存在的价值,只不过要用对地方。参见:利用宏定义中的#实现函数模板的功用C语言宏实现模版函数.........【阅读全文】
发布时间:2020-04-03 15:59:57
1. 在linux kernel的netinet/in.h中# if __BYTE_ORDER == __BIG_ENDIAN/* The host byte order is the same as network byte order, so these functions are all just identity. */# define ntohl(x) (x)# define ntohs(x) (x)# define htonl(x) .........【阅读全文】
发布时间:2020-04-03 14:57:24
1. 判断一个数是否是4的幂次方#define IS_POWER_OF_4(x) (!(x & (x-1)) && !((x-1) % 3))!(x & (x-1)) 经典地判断2的幂次方2的幂次方可以分为2的偶次方即2^2n和2的奇次方即2^(2n+1), 二者有什么区别呢?(!(x & (x-1)) && !((x-1) % 3)) 判断2的偶次方(2^2n), 即通过判断2的偶次方(2^2n)能被3整除。(!(x & (x-1)) && ((.........【阅读全文】
发布时间:2019-05-14 18:30:12
原文地址:printf(),fprintf(),perror() 我们在写C程序时经常遇到printf(),fprintf(),perror(),其实和上述三个函数对应的就是stdin,stdout,stderr。说到这不得不提及stdin,stdout,stderr。想想,我们在用C去写文件时的操作,File *fp=fopen(),这个fp就是我们向系统申请的,相当于一通往文.........【阅读全文】