c 和c ++总结 原创-胡志广
static? int num = 4000;
module_param(num, int , S_IRUGO);
module_param(book_neme ,charp, S_IRUGO);
参数类型:? byte, short, ushort, int uint, long , ulong, charp(字符指针),?bool,
四、导出符号???(建议有)
EXPORT_SYMBOL(?符号名/函数名)
EXPORT_SYMBOL_GPL(符号名?/函数命)
五、模块声明
MODULE_LICENSE(" Dual BSD/GPL ");
MODULE_AUTHOR (" XXXXX");
MODULE_DESCRIPTION("XXXXX DRIVER");
MODULE_VERSION(" XXXX VERSION");
MODULE_DEVICE_TABLE(TABLE_INFO);
MODULE_ALISA(XXXXXXX);
mkdir -p /root/corefile
echo "/root/corefile/core-%e-%p-%t" > /proc/sys/kernel/core_pattern控制core文件保存位置和文件名格式。
?
也就是说,会对#后跟的参数加引号,使其变成一个字符串。
?
2. ##的作用是对文本进行连接
例如下面的宏定义
#define ?CONS( a, b ) a##e##b
那程序中
printf("the number is %d/n", CONS(2,3) );
会被展开成
printf("the number is %d/n", 2e3 );
?
?
需要注意的是,在有#和##的宏中,如果参数本身是宏,则这个参数宏不会展开。
加一层中间转换宏可以解决这个问题。
#define?_STR(s)?????#s?
#define?STR(s)??????_STR(s)??????????//?转换宏?
#define?_CONS(a,b)??int(a##e##b)?
#define?CONS(a,b)???_CONS(a,b)???????//?转换宏
?
1 楼 june_t 2013-09-16 其它的我不知道,我只知道NULL的地址是0x00 2 楼 saiyaren 2013-09-17 june_t 写道其它的我不知道,我只知道NULL的地址是0x000x0我忘记是之前看哪个代码的了,是nginx还是ipvs,但是当时是有这么设置的,而且当你设定一个指针的时候,无论是0x0,或者是0x00,或者是0x000....都是一个null,也就是一个空指针,下面有个demo:
test_null.c
#include <stdio.h>
int main(){
char * test=0x0;
printf("%p:============\n",test);
return 0;
}
gcc test_null.c -o test_null
输出结果:
(nil):============ 3 楼 mike.liu 2013-09-17 saiyaren 写道june_t 写道其它的我不知道,我只知道NULL的地址是0x00
0x0我忘记是之前看哪个代码的了,是nginx还是ipvs,但是当时是有这么设置的,而且当你设定一个指针的时候,无论是0x0,或者是0x00,或者是0x000....都是一个null,也就是一个空指针,下面有个demo:
test_null.c
#include <stdio.h>
int main(){
char * test=0x0;
printf("%p:============\n",test);
return 0;
}
gcc test_null.c -o test_null
输出结果:
(nil):============
NULL不是一个宏定义吗?它有地址? 4 楼 saiyaren 2013-09-17 mike.liu 写道saiyaren 写道june_t 写道其它的我不知道,我只知道NULL的地址是0x00
0x0我忘记是之前看哪个代码的了,是nginx还是ipvs,但是当时是有这么设置的,而且当你设定一个指针的时候,无论是0x0,或者是0x00,或者是0x000....都是一个null,也就是一个空指针,下面有个demo:
test_null.c
#include <stdio.h>
int main(){
char * test=0x0;
printf("%p:============\n",test);
return 0;
}
gcc test_null.c -o test_null
输出结果:
(nil):============
NULL不是一个宏定义吗?它有地址?
NULL 就是一个宏,是定义了一个空指针,一般做初始化用,其实就是一个0;
define NULL ((void*)0)