为什么 isnumber() 函数出现在 Unix 的某些发行版中,而在其他发行版中则没有? [已关闭]

问题描述 投票:0回答:1

我正在编写一个小型 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 上的某些形式中,而不包含在其他形式中?

c linux macos unix
1个回答
11
投票

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

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

OS X 展示了它的传统......

还有一个标准部分谈论

isdigit
但对
isnumber
保持沉默。

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

© www.soinside.com 2019 - 2024. All rights reserved.