6

我正在编写一个小型 C 程序,在其中调用该isnumber()函数。

#include <ctype.h>

char c
if(isnumber(c)) 
    { foo }

这在我的 Mac (OS X 10.8) 上编译没有问题。但是,当我将它上传到 CentOS 6.x 服务器时,它不会编译。此外,OS Xman页面isdigit()描述isnumber(),但 CentOSman页面没有。就好像它根本不存在于 Linux 机器上一样。OS Xman页面isdigit()通用 Unixman页面isdigit()isnumber()列为 C 标准库的一部分libc, -lc。当我-lc在 Linux 上添加编译标志时,它仍然无法编译。

为什么这个函数包含在 Unix 的某些形式中而不包含在其他形式中?

4

1 回答 1

11

isnumber()是一个BSDism,如链接手册页的 HISTORY 部分所示:

isnumber() 函数出现在 4.4BSD 中。

OS X 在那里展示了它的传统......

还有一个 STANDARDS 部分谈论isdigit但对isnumber.

无论如何,Linux、BSD 或 OS X 手册页不应该被认为是关于 C 语言的权威,甚至关于 POSIX 标准。对于 C,请阅读 C 标准规范(很容易找到),对于 POSIX,您可以阅读OpenGroup 网站

于 2012-11-21T00:49:40.240 回答