㈠ c語言是不是跨平台的
回答可以說是也不是。
C的源代碼是跨平台的而編譯後的目標文件和可執行文件就不是跨平台的。
因為針對不同的平台會用不同的編譯器來編譯和鏈接同樣的源代碼。
當然如果你的代碼里有針對某種特定平台的代碼的話(比如Windows API調用),那麼用針對其它平台的編譯器就會出錯。
一般來說如果想寫真正跨平台的源代碼會用#define 來實現有條件的編譯。
㈡ c語言可跨平台嗎
可以, 但需要使用標准庫函數.
同樣的庫函數在不同平台返回值可能有點差異,例如strcmp(不確定), 不過差別不大
㈢ c語言為什麼能跨平台或者是如何跨平台的
c語言能跨平台是因為各個平台有相應的c編譯器,只要源代碼相同,編譯器編譯出來的二進制文件就會實現相同的功能,但是這些二進制文件本身是不一樣的。
exe就是2進制的,但不完全是原來程序的代碼,還包括了windows系統的一些代碼。
科普一下,C最早是出現在Unix下的,Windows那都是後話了,C出現的時候Windows還沒開發出來呢。
C有個比較特別的稱呼,叫中級語言,因為它有高級語言的特性又能跟底層硬體很好的交互所以才有這么個說法。DOS時代在C裡面嵌上一段匯編直接從並口讀個數上來那是很流行的,現在沒見誰在VC裡面這么干吧。Windows也不讓啊。想訪問硬體怎麼也得通過驅動。
C在多種平台下可以實現代碼級的共享,跨平台就需要重新編譯了。
但是,我也見過有的軟體是可以在多種平台上運行了,可能有什麼特別的技術,可以先識別一下操作系統,再運行相應的代碼。這個應該是在編譯的時候有特殊的技巧。
C編譯、連接器網上有現成的代碼,一般不是很專業的技術人員沒有去研究它。我一直把玩編譯原理的視為天人,有能力把編譯原理那本書看完的就很不容易了,再要能領會其中精要那就成才了,能把龍書虎書鯨書都搞明白的那就是一流專家了。
㈣ c#真的可以跨平台嗎
從理論上說,C#是完全可以跨平台的。因為c#是藉助.Net平台運行的,c#代碼會被編譯生成為MSIL,即微軟中間語言,類似於Java的位元組碼,.Net是根據MSIL來執行的,而不是像C語言那樣直接生成本地代碼。C語言之所以無法跨平台,是因為進行與系統有關的操作的時候需要調用系統提供的函數,並編譯成為本地代碼,就是執行時可以直接運行的代碼。所以按理來說,只需要提供能夠運行在不同操作系統中的.Net平台,就可以實現跨平台運行。可是,微軟在.Net跨平台方面做得並不好,導致C#的跨平台性並不好。希望能幫到你。
㈤ c語言為什麼能跨平台或是如何跨平台的
c語言能跨平台是因為各個平台有相應的c編譯器,只要源代碼相同,編譯器編譯出來的二進制文件就會實現相同的功能,但是這些二進制文件本身是不一樣的
exe就是2進制的,但不完全是原來程序的代碼,還包括了windows系統的一些代碼
科普一下,C最早是出現在Unix下的,Windows那都是後話了,C出現的時候Windows還沒開發出來呢。
C有個比較特別的稱呼,叫中級語言,因為它有高級語言的特性又能跟底層硬體很好的交互所以才有這么個說法。DOS時代在C裡面嵌上一段匯編直接從並口讀個數上來那是很流行的,現在沒見誰在VC裡面這么干吧。Windows也不讓啊。想訪問硬體怎麼也得通過驅動。
說遠了,C在多種平台下可以實現代碼級的共享,跨平台就需要重新編譯了。
但是,我也見過有的軟體是可以在多種平台上運行了,可能有什麼特別的技術,可以先識別一下操作系統,再運行相應的代碼。這個應該是在編譯的時候有特殊的技巧。
C編譯、連接器網上有現成的代碼,一般不是很專業的技術人員沒有去研究它。我一直把玩編譯原理的視為天人,有能力把編譯原理那本書看完的就很不容易了,再要能領會其中精要那就成才了,能把龍書虎書鯨書都搞明白的那就是一流專家了。
㈥ C語言是如何編譯與組建的,跨平台性
c語言能跨平台是因為各個平台有相應的c編譯器,只要源代碼相同,編譯器編譯出來的二進制文件就會實現相同的功能,但是這些二進制文件本身是不一樣的
exe就是2進制的,但不完全是原來程序的代碼,還包括了windows系統的一些代碼
㈦ c語言是如何跨平台的
c語言能跨平台主要因為各個平台包括DOS,Windows,Linux,UNIX等都有c編譯器,只要源代碼相同,編譯器編譯出來的二進制文件就會實現相同的功能(不包括跨平台的系統調用)。但是這些二進制文件不一樣,Linux中的可執行文件一般情況下都不能在Windows中運行,因為他們是兩個完全不同的操作系統,有不同的內核,不同的系統調用。但編譯器會根據不同的平台生成不同的代碼,使二進制文件能在專有的平台中運行,並且實現相同的功能。
跨硬體平台也是類似,在各種平台上,如x86,x86_64,Sparc,ppc,Motorola等都有相應的編譯器。編譯器會把相同的c語言代碼編譯成不同的機器指令,這樣就可以實現跨平台了。
總而言之,跨平台主要是靠各個平台上的編譯器。
㈧ 用C語言可以寫操作系統嗎
C語言當然是可以寫操作系統的,但是操作系統的編寫一般都不僅僅只是用C語言編寫的。
寫操作系統需要編程語言提供以下幾個特徵:
1、跨平台,不能是只在某個平台下編譯(VB就不行);
2、必須是編譯型語言(PHP就不行),或者有一個非常高效的解釋器;
3、必須有方便的操作硬體的功能,容易嵌入匯編(Java就不行);
4、兼容性要好,最好不同編譯器編譯的符號要基本相同,容易鏈接(C++不行,如果放棄Class的話C++基本可以);
5、編譯器本身最好是由該語言自己完成的(大部分語言的編譯器都是用C/C++寫的);
6、開發者可以很方便的擴展、改造、或者使用第三方的運行庫(大部分語言的庫都無法修改);
7、開發者眾多(小眾語言就不行);
8、該語言開發操作系統的資料要足夠完善。
所以總結下來,C語言是首選。
㈨ c語言跨平台嗎
是的,這個語言是跨平台的
㈩ C語言是跨平台的么如果是 那麼C語言的跨平台特性和java的跨平台特性有什麼不同
標准C和標准C++都是源代碼級跨平台的, 也就是說你用標准C/C++寫的代碼在windows下編譯後就可以windows下運行, 在unix/linux下編譯後就可以在unix/linux下運行.c語言能跨平台主要因為各個平台包括DOS,Windows,Linux,UNIX等都有c編譯器,只要源代碼相同,編譯器編譯出來的二進制文件就會實現相同的功能(不包括跨平台的系統調用)。但是這些二進制文件不一樣,Linux中的可執行文件一般情況下都不能在Windows中運行,因為他們是兩個完全不同的操作系統,有不同的內核,不同的系統調用。但編譯器會根據不同的平台生成不同的代碼,使二進制文件能在專有的平台中運行,並且實現相同的功能。
總之,C的源代碼是跨平台的而編譯後的目標文件和可執行文件就不是跨平台的,跨平台主要是靠各個平台上的編譯器。
在使用匯編語言的時代里,每個廠家都有一套自己的匯編語言,那時計算機程序與機器綁定,不是同一個廠家的程序在其他廠家的平台下就不能運行。直到C語言出現以後,我們才能將X86平台下的C語言程序源文件,換到POWER平台編譯以後直接運行。因此C的跨平台移植功能是指在硬體架構上的移植性。 JAVA的跨平台能力是指其不需要指定操作系統可以直接運行。
C語言「一次編寫,到處編譯」,Java是「一次編譯,到處運行」。
如C++創始人酸溜溜的說法,JVM造了一個新的平台,讓所有Java程序只能在這個平台上運行,而C和C++的代碼可以在幾十個不同的平台上運行,從這個角度而言,C和C++是跨平台的,而Java不是。