__WORDSIZE 在编译中的作用

Role of __WORDSIZE in compilation

以下是/usr/include/x86_64-linux-gnu/gnu/stubs-32.h文件的内容:

#include <bits/wordsize.h>    
#if __WORDSIZE == 32
# include <gnu/stubs-32.h>
#elif __WORDSIZE == 64
# include <gnu/stubs-64.h>
#else
# error "unexpected value for __WORDSIZE macro"
#endif

我在 64 位机器上,所以

的结果
#include<stdio.h>
main()
{
printf("Word size : %d\n",__WORDSIZE);
}

Word size : 64

那么问题来了,系统变量__WORDSIZE的作用是什么? 我正在开发一个 32 位应用程序(使用 mingw 32 位编译器),因为我的 __WORDSIZE 是 64 位的,所以文件 /usr/include/x86_64-linux-gnu/gnu/stubs-32.h 最终导致包含 /usr/include/x86_64-linux-gnu/gnu/stubs-64.h。我对这部分感到困惑。此操作的后果是什么?这是正常的吗?如果不是,我怎么能强行包含 /usr/include/x86_64-linux-gnu/gnu/stubs-32.h?

提前谢谢你。

它是一个清单常量,供编译器实现内部使用独占;它的名称以两个下划线为前缀,这清楚地表明它不适用于用户 space.