c - 为什么 isnumber() 函数存在于某些 Unix 发行版中,而其他发行版中却没有?

标签 c linux macos unix compiler-construction

<分区>

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

#include <ctype.h>

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

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

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

最佳答案

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

The isnumber() function appeared in 4.4BSD.

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

还有一个标准部分讨论了 isdigit 但没有提及 isnumber

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

关于c - 为什么 isnumber() 函数存在于某些 Unix 发行版中,而其他发行版中却没有?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/13484663/

相关文章:

c++ - 在结构指针中修改 C 字符串

java - 使 Oracle JDK 在 Ubuntu 或 GNU/Linux 操作系统中自动更新

linux - 如何在 x86_64 程序集中打印字符串

ios - 如何在 macOS 上的 lldb 中查看别名的定义?

c -/dev/shm 在 Mac OS X 上的位置

c - gdb 在使用偏移量工作时在地址处中断时停止程序

压缩整数列表以进行搜索访问

c - 编写 C 宏

c - 用管道模拟 linux 命令不起作用

macos - Docker - all-spark-notebook - 安装本地驱动器