我曾與< iostream>和其他一般C++庫。除此之外,我還與圖書館合作,如< pthread.h>。庫的工作
現在,我已經看到,系統調用是依賴操作系統允許庫和硬件上的功能實現之間的接口。這在pthread.h> <的工作中很明顯,我們可以在Linux中使用它,但不能在Windows中使用。我的解釋是,在<之內,pthread.h>函數是使用UNIX 系統調用定義的,Windows不能理解這些函數。
但是< iostream>似乎在Linux和Windows都可以正常工作。現在我的問題是,即使
< iostream>的功能將需要定義的系統調用,這是不同的Windows和Linux,那麼它是如何,< iostream>工作正常在操作系統。 PS:我知道根據我上面的想法,所有庫(即API)將根據操作系統進行劃分,或者庫將針對不同的操作系統以不同的形式出現。
@gokcehan ...所以請糾正我,如果我錯了...(1)像< iostream>這樣的C++標準庫有兩套針對每個函數的定義。一套使用Windows系統調用定義函數,另一套使用類Unix操作系統系統調用定義函數。執行的集合由編譯器根據(2)pthreads和其他posix庫只有一組使用unix系統調用的定義。(3)Cygwin或interix使用與pthreads相同的函數簽名,但在定義它們時,它們包括win32線程並使用它的函數來定義它們。 – avinash
(1)諸如''之類的C++庫頭文件作爲編譯器安裝的一部分安裝,如linux上的'gcc'或者windows上的'cl.exe'(visual studio編譯器)。由於'gcc'不支持windows(至少不是本地的 - 如果你想更困惑,請參閱[mingw](http://mingw.org/)),並且vica也是如此,因爲沒有windows的系統調用''Linux系統上存在的頭文件(在我的計算機上檢查過)。 (2)是的,如果你排除cygwin和interix –
none
(3)我猜是的(不能檢查,因爲我沒有安裝它們)(4)事物並不總是黑白的,因此一個寬鬆的理解將最除非你是內核黑客,否則對於大多數目的來說就足夠了。 – none