【发布时间】:2015-01-10 16:39:43
【问题描述】:
在用户空间代码中,使用了宏__WORDSIZE,包含在<bits/wordsize.h> 中。但是,当我进行 Linux 内核编程时,__WORDSIZE 似乎不可用。
如果包含<bits/wordsize.h>,它会收到一个编译错误,说:
error: bits/wordsize.h: No such file or directory
但如果不包含<bits/wordsize.h>,它会收到另一个编译错误,说:
error: ‘__WORDSIZE’ undeclared.
内核编程似乎不支持<bits/wordsize.h> 头文件。 Linux内核编程中的wordsize应该怎么确定?
附:我的编译器版本是gcc (GCC) 4.4.6。
【问题讨论】:
-
解决此类问题的策略可能是考虑为什么您需要知道。然后想想现有的内核功能具有相同的需求,然后去看看它是如何实现的。
-
因为我想在 x86 和 x64 上编写不同的代码目标,而
#if __WORDSIZE == 32是一个很好的方法。 -
如果目标都不是呢?
-
我不在乎,我公司的所有产品仅针对 x86 和 x64。
-
那么你应该匹配那些架构,而不是他们与其他人共享的属性。
标签: linux linux-kernel kernel kernel-module computer-architecture