读书人

c 跟c ++总结 原创-胡志广

发布时间: 2013-10-01 12:15:56 作者: rapoo

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的地址是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):============ 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)

读书人网 >编程

热点推荐