弄linux编程用的是gcc,而之前所了解的都是标准,对gcc的扩展不太了解,所以做一些记录,以后后面用得着。
1、
函数参数外定义
main(argc, argv)
int argc;
char **argv;
{
return;
}
//gcc 可以编译通过。
2、 类型的获取
typeof
int a;
typeof(a) b;
main(argc,argv)
int argc;
char **argv;
{
int a;
typeof(a) b;
a =1 ;
b =1;
printf("%d %d \n",a,b);
return;
}
3、零长度数组
#include <stdio.h>
#include <stdlib.h>
main(argc,argv)
int argc;
char **argv;
{
int a[0];
return;
}
#include <stdio.h>
#include <stdlib.h>
main(argc,argv)
int argc;
char **argv;
{
char a =100;
switch(a){
case 1 ... 10: printf(" between 0 ... 10 \n");break;
case 11 ... 20: printf(" between 11 ... 10 \n");break;
case 21 ... 30: printf(" between 21 ... 30 \n");break;
case 91 ... 100: printf(" between 91 ... 100 \n");break;
default: printf(" Not exist \n");break;
}
return;
}
5、数组的初始化
int a[100] = {[0 ... (100-1)] = 0};
6、零数组或未定义大小数组在结构体中的使用
typedef struct {
int a;
char str[];//或者str[0]
}test;
void main(void){
test* pTest;
pTest = (test*) malloc(sizeof(test)+ 100);
memcpy(pTest->str,"hello world!",sizeof("hello world!"));
printf("%s \n",pTest->str);
}