包含后,HOST_NAME_MAX未定义
我不知道为什么它仍然说HOST_NAME_MAX是隐式声明。
相反,我在网上搜索并执行以下操作来修复它:
#include
并使用MAXHOSTNAMELEN
而不是HOST_NAME_MAX
但是,我不太确定这是一个好方法,以及背后的原因。
使用grep
:
$ grep -rl '#define HOST_NAME_MAX' /usr/include
我们可以看到HOST_NAME_MAX
定义在:
/usr/include/bits/local_lim.h
/usr/include/bits/posix1_lim.h
包含local_lim.h
:
# grep -rl local_lim.h /usr/include /usr/include/bits/posix1_lim.h
只有在定义了__USE_POSIX
才包含__USE_POSIX
:
#ifdef __USE_POSIX /* POSIX adds things to . */ # include #endif
所以,如果您的代码如下:
#define __USE_POSIX #include
您应该拥有HOST_NAME_MAX
常量。 话虽如此,在我的系统上__USE_POSIX
似乎是默认定义的。 例如,以下代码:
#include #include #include #include int main(int argc, char **argv) { #ifdef __USE_POSIX printf("__USE_POSIX is defined\n"); #endif printf("HOST_NAME_MAX: %d\n", HOST_NAME_MAX); return 0; }
打印:
__USE_POSIX is defined HOST_NAME_MAX: 64