我正在为我的学习编写一个程序,因此我必须描述一些战争来获得某些数据类型的限制。当我写这个时:
#include <limits.h>
#include <stdio.h>
int main(void)
{
printf("%d\n", CHAR_BIT);
printf("%d\n", LONG_BIT);
return 0;
}
但它给了我以下错误:
a.c: In function ‘main’:
a.c:7:17: error: ‘LONG_BIT’ undeclared (first use in this function)
printf("%d\n", LONG_BIT);
^
a.c:7:17: note: each undeclared identifier is reported only once for each function it appears in
甚至 gcc -E 给了我这个
int main(void)
{
printf("%d\n", 8);
printf("%d\n", LONG_BIT);
return 0;
}
但是limits.h中的grep并没有给我答案。但是 bits/xopen_lim.h 有这个声明,它应该包含在什么时候
__USE_XOPEN
已声明,但即使手动声明也不会给我结果。
那么问题出在哪里?看一下手册页说有一个 LONG_BIT 宏,但 gcc 说没有。
gcc 版本 4.8.0 (GCC) 操作系统架构
[编辑] 对于那些说 LONG_BIT 不是 c 标准的人,输入
man 0 limits.h
并搜索 LONG_BIT。对我来说,数值限制下有两个条目,因此我认为 LONG_BIT 存在。不,包括 bits/xopen_lim.h 不是一个真正的选项,因为它应该包含在 limits.h 中,而不是手动包含