我正在编写一个小型 C 程序,在其中调用
isnumber()
函数。
#include <ctype.h>
char c
if(isnumber(c))
{ foo }
这在我的 Mac (OS X 10.8) 上编译没有问题。但是,当我将其上传到 CentOS 6.x 服务器时,它无法编译。此外, man
OS X
isdigit()
页面描述了 isnumber()
,但 CentOS man
页面没有描述。就好像它根本不存在于 Linux 机器上一样。 man
的 OS X
isdigit()
页面和man
的通用 Unix isdigit()
页面都将
isnumber()
列为 C 标准库 libc, -lc
的一部分。当我在 Linux 上将 -lc
添加到编译标志时,它仍然无法编译。
为什么这个函数包含在 Unix 上的某些形式中,而不包含在其他形式中?
isnumber()
是一个 BSDism,如链接手册页的历史部分所示:
isnumber()函数出现在4.4BSD中。
OS X 展示了它的传统......
还有一个标准部分谈论
isdigit
但对 isnumber
保持沉默。
无论如何,Linux、BSD 或 OS X 手册页不应该被视为关于 C 语言,甚至关于 POSIX 标准的权威。对于 C,请阅读 C 标准规范(很容易找到),对于 POSIX,您可以阅读 OpenGroup 网站。