![](/img/trans.png)
[英]difference between header files “<stdio.h>” and “<stdlib.h>”
[英]Reference of all functions and constants in stdlib.h, stdio.h?
我想查找C庫中定義的所有函數,常量和類型: stdlib.h
, stdio.h
, ctype.h
等。因此,在C程序中時,我會執行: #include <stdlib.h>
或#include <stdio.h>
我想知道我從中得到的所有函數,常量和類型是什么?
在計算機上本地執行此操作的最簡單方法是什么? 我對在線參考文獻不太感興趣,特別是如果它們不是官方的。
是否有手冊頁列出了例如stdlib
? 也許GNU info
程序對此具有文檔? 還是我必須找到一個實際的頭文件並進行查找?
我更喜歡通用的方法,但是如果系統之間存在差異,我很好奇如何在Mac和Linux上做到這一點?
您的術語stdlib
定義不明確。 C編程語言中有一個“標准I / O庫”,以及一個stdlib.h
頭文件。
對於C標識符,這是ISO C和POSIX標識符的概述。
除此之外,您還可以使用以下命令查看庫文件中的符號
nm -AP /path/to/libfoobar.a
更新資料
要檢查編譯器看到的標題形式,請查看預處理結果( -E
):
$ gcc -E /usr/include/stdlib.h|less
typedef unsigned char __u_char;
typedef unsigned short int __u_short;
typedef unsigned int __u_int;
typedef unsigned long int __u_long;
[...]
typedef struct
{
int quot;
int rem;
} div_t;
typedef struct
{
long int quot;
long int rem;
} ldiv_t;
[...]
extern long int random (void) __attribute__ ((__nothrow__ , __leaf__));
[...]
當包含標准C標頭之一時,至少可以聲明三種類型的標識符:
C標准指定的標識符。 有關這些信息的權威來源是C標准以及您正在使用的C實現的文檔。
C語言擴展的標識符。 例如,標頭可以聲明POSIX函數的標識符。 標頭只有在您通過在包含標頭之前定義某些預處理器符號來請求它們時,才聲明此類標識符。
C實現內部使用的標識符。 這些標識符通常以下划線開頭,后跟另一個下划線或大寫字母,因為C標准保留了這些標識符。 您可以通過檢查C實現中的實際頭文件來發現這些標識符,但是除非您的實現文檔允許使用它們,否則您不應使用它們。
總體而言,如果您想了解C在標准標頭中提供的內容,則應閱讀C標准(有關權威信息)或一本不錯的C教科書(有關教程信息)。 如果您想了解標頭中還有什么,則實現可以將各種內容放入標頭中,因此找出其中的方法是閱讀實現的文檔和/或檢查頭文件,然后找到其提供的其他內容的文檔 ,例如POSIX文檔 。
您在計算機上詢問來源。 您的C實現可能隨附文檔,Unix包含可通過man
命令訪問的文檔。 雖然您可以檢查實際的頭文件,但重要的是要了解頭文件的當前內容不構成有關將來行為的任何保證。 在將來的版本中,任何內部標識符都可能會更改,並且標准標識符的行為可能會根據C標准的允許而更改。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.