“\ __ signed”“\ __ signed__”和“signed”之间有什么区别?

时间:2013-08-13 10:32:19

标签: c linux kernel

我正在研究"include/asm-x86/types.h",我对\__signed__的含义感到有些困惑。

当我使用Google关键字时,我无法获得任何有用的信息。为什么不使用signed代替\__signed__,它有特殊意义吗?

3 个答案:

答案 0 :(得分:1)

这用于向后兼容,当较旧的编译器无法识别signed关键字时,会使用此类备选方案。

答案 1 :(得分:1)

__signed__signed之间的区别与命名空间有关。 signed名称仅适用于__KERNEL__,而非外部。

正如您提到的header file顶部所述:

/*
* __xx is ok: it doesn't pollute the POSIX namespace. Use these in the
* header files exported to user space
*/

对于没有下划线的signed名称,请说明:

/*
* These aren't exported outside the kernel to avoid name space clashes
*/

答案 2 :(得分:1)

__signed__也用于gcc -traditional的编译,其中无法识别关键字signed

请勿使用c __signed__进行Google搜索,因为搜索中会跳过__等特殊字符,使用c "__signed__"进行文字搜索,您将获得有用的信息。