随笔分类 - C
摘要:c lang misc 补码 正数的补码就是其本身 负数的补码就是在其原码的基础上,符号位不变,取反后加一。 补码存在的意义就是为了统一计算机加减 比如(7)+(-7)=0 7 -> 0000 0111(7的补码) -7 -> 1111 1001(-7的补码) 所以相加为1 0000 0000(超出
阅读全文
摘要:c misc .printk一些技巧 https://www.cnblogs.com/sky-heaven/p/7161373.html
阅读全文
摘要:在源代码里面如果这样是定义的:#ifdef MACRONAME//可选代码#endif 那在makefile里面gcc -D MACRONAME=MACRODEF或者gcc -D MACRONAME 这样就定义了预处理宏,编译的时候可选代码就会被编译进去了。 对于GCC编译器,有如下选项: -D m
阅读全文
摘要:程序的编译过程可以分为预处理、编译、汇编三部分,其中预处理是首先执行的过程,预处理过程扫描程序源代码,对其进行初步的转换,产生新的源代码提供给编译器。预处理过程读入源代码之后,会检查代码里包含的预处理指令,完成诸如包含其他源文件、定义宏、根据条件决定编译时是否包含某些代码的工作。下面介绍一些C/C+
阅读全文
摘要:char (*a)[N];//指向数组的指针 a = (char (*)[N])malloc(sizeof(char) * N * m); printf("%d\n", sizeof(a));//4,指针 printf("%d\n", sizeof(a[0]));//N,一维数组 free(a);
阅读全文
摘要:可以用二维数组名作为实参或者形参,在被调用函数中对形参数组定义时可以指定所有维数的大小,也可以省略第一维的大小说明,如: void Func(int array[3][10]); void Func(int array[][10]); 二者都是合法而且等价,但是不能把第二维或者更高维的大小省略,如下
阅读全文
摘要:1. example 0 A_CAREFULLLESS_SOMETHING /* not ended with a ; */ #define DEFINE_MACRO0 #define DEFINE_MACRO1 ...... typedef enum { TYPEDEF_ENUM_0 ......
阅读全文
摘要:notices for complex macro definition in C 1. space is prohibitted after the backslash(\) otherwise the below build error will be prompted: backslash a
阅读全文
摘要:v1--单参数宏 这个版本的DRV_PRINT(x)只能输出单变量——纯字符串 不需要打印调试信息时,更改DRV_DEBUG宏定义 当然也可以直接这样定义 但是如果宏调用了多个参数: 产品代码中的#define DRV_PRINT(x)将编译错误! 怎么办?一种处女座肯定接受不了的做法,多加对括号
阅读全文
摘要:customized print macro #define DEBUG_INFO(fmt, ...) printf(fmt, __VA_ARGS__) then you can use DEBUG_INFO() macro to print debug info like printf. exam
阅读全文