簡體   English   中英

c ++中存儲的非標准函數的聲明在哪里?

[英]Where are the declarations of non-standard functions stored in c++?

我知道這些函數的原型位於相應的頭文件中。 標准函數的聲明在標准庫中,這就是為什么我們使用術語“使用命名空間std”的原因。 但是,非標准函數的聲明存儲在哪里?

標准庫不必實現為頭文件。

C ++標准指出了#include <vector>時會發生什么。 它不需要vector成為系統上的頭文件; 它可以實現為引入某些符號和類型的編譯器內部函數。

它規定了當您與這些符號和類型進行交互時會發生什么。

作為頭文件通常很容易做到; 但是std中有一些C ++功能無法在C ++中實現。 通常,“表面”交互是在C ++中完成的,但是它們又依賴於魔術編譯器的內在函數。

很多std可以存在並且確實以純頭文件形式存在。 它的其他部分通常被編譯到庫中,通常大多用C或C ++編寫。 它們與操作系統庫進行交互,這些操作系統庫也大多是用C(有時是C ++和其他語言)編寫的,而這些庫又與使用C和匯編語言混合編寫的特定於硬件的代碼進行通訊。

“運行時”庫可以動態或靜態鏈接到您的輸出,並充當C ++要求與特定OS提供的功能之間的一種“膠水”。


可以存在其他庫。 它們的頭文件以編譯器確定的方式存儲,並以編譯器確定的方式進行搜索。 它們的庫的動態或靜態鏈接也以編譯器確定的方式進行,就像所述庫所在的位置一樣。

只要可以導出與編譯器期望的ABI相匹配的接口,它們就可以用多種語言編寫。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM