2012-11-21 27 views
6

我正在寫一個小型的C程序,我在其中調用isnumber()函數。爲什麼isnumber()函數在Unix的某些發行版中存在,但在其他版本中不存在?

#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()都具有作爲C標準庫libc, -lc的一部分列出的isnumber()。當我將-lc添加到Linux上的編譯標誌時,它仍然不會編譯。

爲什麼這個函數包含在Unix的某些形式中,而不是其他的?

回答

11

isnumber()BSDism,如可以在鏈接的手冊頁的歷史章節中可以看出:

的ISNUMBER()函數出現在4.4BSD。

還有OS X顯示其遺產...

也有一個標準節談到isdigit但靜音約isnumber

無論如何,Linux,BSD或OS X手冊頁不應被認爲是關於C語言或甚至POSIX標準的權威。對於C讀取C標準規格(易於查找),對於POSIX,您可以閱讀OpenGroup web site

相關問題