当前位置: 技术问答>linux和unix
printk奇怪问题,请高手指点!
来源: 互联网 发布时间:2016-02-25
本文导语: 小弟我在调试网卡驱动的时候写了下面语句: static long long count = 0; static long long drop = 0; static long long crc_error = 0; . . . printk(" count=%ld drop=%ld crc_error=%ldn", ...
小弟我在调试网卡驱动的时候写了下面语句:
static long long count = 0;
static long long drop = 0;
static long long crc_error = 0;
.
.
.
printk(" count=%ld drop=%ld crc_error=%ldn", count, drop, crc_error);
printk(" crc_error=%ldn", crc_error);
.
.
.
程序运行的时候打印出来的结果是:
count=5 drop=0 crc_error=0
crc_error=5
按理来说crc_error的值应该是5,为什么第一条打印是0呢???????
|
刚刚试了下
printk是只能支持4字节的输出
如果你输入你个8字节的变量,只有四个字节
static long long lnum = 0x1000000020000000;
printk(KERN_EMERG"Module is loaded, lnum is %ld!n", lnum);
[root@wolf drivertest]#
Message from syslogd@wolf at Mon Apr 3 06:28:12
wolf kernel: Module is loaded, lnum is 536870912!
536870912 = 0x20000000
printk是只能支持4字节的输出
如果你输入你个8字节的变量,只有四个字节
static long long lnum = 0x1000000020000000;
printk(KERN_EMERG"Module is loaded, lnum is %ld!n", lnum);
[root@wolf drivertest]#
Message from syslogd@wolf at Mon Apr 3 06:28:12
wolf kernel: Module is loaded, lnum is 536870912!
536870912 = 0x20000000
|
C语言最容易出现的错误就是内存溢出,出现这种错误之后的最常见现象就是LZ所描述的那样,所以你仔细看看其它相关的代码
|
printk 支持long long 吗?
long long 在32位系统上应该是8字节吧?
8字节应该不是系统的内部数据类型吧
这个到不是很清楚
只是印象中printf也是只能处理4字节吧,在32系统上
long long 在32位系统上应该是8字节吧?
8字节应该不是系统的内部数据类型吧
这个到不是很清楚
只是印象中printf也是只能处理4字节吧,在32系统上
|
不会哦
你怎么设置的 count ?开始初始化的是 0 啊 ,
不会无原无故地变 5 吧?
中间细节是什么?
你怎么设置的 count ?开始初始化的是 0 啊 ,
不会无原无故地变 5 吧?
中间细节是什么?
|
以后需再关注,现在先帮你顶一下
您可能感兴趣的文章:
本站(WWW.)旨在分享和传播互联网科技相关的资讯和技术,将尽最大努力为读者提供更好的信息聚合和浏览方式。
本站(WWW.)站内文章除注明原创外,均为转载、整理或搜集自网络。欢迎任何形式的转载,转载请注明出处。
本站(WWW.)站内文章除注明原创外,均为转载、整理或搜集自网络。欢迎任何形式的转载,转载请注明出处。