Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/visual-studio-2008/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C 主机名称\u最大值在包含后未定义<;极限h>;_C_Hostname - Fatal编程技术网

C 主机名称\u最大值在包含后未定义<;极限h>;

C 主机名称\u最大值在包含后未定义<;极限h>;,c,hostname,C,Hostname,我不知道为什么它仍然说HOST_NAME_MAX是隐式声明 相反,我搜索了web并执行以下操作来修复它: #include <netdb.h> #包括 并使用MAXHOSTNAMELEN而不是HOST\u NAME\u MAX 然而,我不太确定这是一个好办法,以及背后的原因 使用grep: $ grep -rl '#define HOST_NAME_MAX' /usr/include 我们可以看到,HOST\u NAME\u MAX的定义如下: /usr/include/bit

我不知道为什么它仍然说HOST_NAME_MAX是隐式声明

相反,我搜索了web并执行以下操作来修复它:

#include <netdb.h>
#包括
并使用
MAXHOSTNAMELEN
而不是
HOST\u NAME\u MAX


然而,我不太确定这是一个好办法,以及背后的原因

使用
grep

$ grep -rl '#define HOST_NAME_MAX' /usr/include

我们可以看到,
HOST\u NAME\u 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
posix1\u lim.h
仅在定义了
\u使用\u POSIX
的情况下才包含在
限制中

#ifdef  __USE_POSIX
/* POSIX adds things to <limits.h>.  */
# include <bits/posix1_lim.h>
#endif
印刷品:

__USE_POSIX is defined
HOST_NAME_MAX: 64

中未定义主机名\u MAX
。你为什么期望它会这样?@Keith那么它的定义是什么?我已经检查过了,很抱歉,我错了。它是在
中定义的,但不是默认情况下定义的。(它由POSIX指定,而不是由C指定)。有一种方法可以指定您希望
定义它,但我记不得了。@KeithThompson谢谢!我将尝试搜索并查看其他人的想法……我可以看到它的实现与您发布的一样,但是从中我可以看到,根据标准,应该使用POSIX_C_SOURCE,而不是USE_POSIX。这不起作用(因为它不是这样编码的)。你知道为什么它没有用(POSIX_C_SOURCE)编码吗?在做了进一步的调查后,因为它在"posix1_lim.h"里面对我不起作用,我发现有些东西已经被更改了(主机名)MAX现在是(POSIX_主机名)MAX登录名(MAX现在是(POSIX)登录名)
#include <stdio.h>
#include <stdlib.h>
#include <unistd.h>

#include <limits.h>

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