介绍c99和gcc 扩展的几个重要的宏,说明了基本的作用。配上例子帮助理解...
分类:
其他好文 时间:
2014-12-11 16:00:26
阅读次数:
139
C99中中结构体初始化也提供了一个比较奇葩的初始化方式:#include#includestruct MyStruct{ int num; float fl; double db; _Bool b;//c99新增的bool类型 1,0}my1 = { .num = 10,...
分类:
其他好文 时间:
2014-12-09 22:58:47
阅读次数:
263
可变参宏: 1 #include 2 #include 3 4 #define MYPRINT(...) printf(__VA_ARGS__) 5 6 int main(int argc, char **argv) 7 { 8 MYPRINT("%d,%s", 10, "hello...
分类:
其他好文 时间:
2014-12-09 22:50:39
阅读次数:
531
在C99语法中新增加了_Bool 的布尔类型语法,例子如下: 1 #include 2 #include 3 4 int main(int argc, char **argv) 5 { 6 _Bool b; 7 b = 0; 8 printf("%d\n", b); 9...
分类:
其他好文 时间:
2014-12-09 21:25:23
阅读次数:
341
C/C++中在栈上开辟内存是最常见的,而且只要是在栈上开辟内存都要是固定的,而C99中有种用法相当奇葩int *p = ((int[]){ [0] = 1, [15] = 10 });在栈上分配这么一个空间,其反汇编结果如下: 1 int *p = ((int[]){ [0] = 1, ...
分类:
其他好文 时间:
2014-12-09 21:11:34
阅读次数:
174
C语言C99标准中出现了一些比较奇葩的语法,比如说使用元素下标的方式了对数组进行初始化这种操作Demo如下: 1 #include 2 #include 3 4 int main(int argc, char **argv) 5 { 6 int arr[] = { [0] = 1, [...
分类:
其他好文 时间:
2014-12-09 19:33:36
阅读次数:
212
学习flexible array member是因为阅读Redis源码遇到的,sds.h中一开始就用到了。==============================================================================================在讲述...
分类:
编程语言 时间:
2014-11-21 21:46:00
阅读次数:
250
1. 增加restrict指针 C99中增加了公适用于指针的restrict类型修饰符,它是初始访问指针所指对象的惟一途径,因此只有借助restrict指针表达式才能访问对象。restrict指针指针主要用做函数变元,或者指向由malloc()函数所分配的内存变量。restrict数据类型不改变.....
分类:
其他好文 时间:
2014-11-18 06:55:23
阅读次数:
336
在C语言的标准库中,printf、scanf、sscanf、sprintf、sscanf这些标准库的输入输出函数,参数都是可变的。在调试程序时,我们可能希望定义一个参数可变的输出函数来记录日志,那么用可变参数的宏是一个不错的选择。
在C99中规定宏也可以像函数一样带可变的参数,如:
#define LOG(format, ...) fprintf(stdout, format, __VA_AR...
分类:
编程语言 时间:
2014-11-18 00:29:17
阅读次数:
230
C99中新增加了restrict修饰的指针:由restrict修饰的指针是最初唯一对指针所指向的对象进行存取的方法,仅当第二个指针基于第一个时,才能对对象进行存取。对对象的存取都限定于基于由restrict修饰的指针表达式中。由restrict修饰的指针主要用于函数形参,或指向由malloc()分配...
分类:
编程语言 时间:
2014-11-16 18:37:34
阅读次数:
209