我正在閱讀Wikipedia article關於JAVA和C++的區別。一個區別是C++提供了「多種二進制兼容性標準」。你能解釋一下這意味着什麼,或者提供一個很好的參考。我有一個線索,這意味着用'C++編寫的二進制文件非常便攜,可以在任何操作系統或環境中使用。我想要得到確認和更精確。這是什麼一回事呢?二進制文件和兼容性標準信息 - C++/JAVA
如何生成二進制文件?是什麼讓它不便攜?
感謝和問候。
我正在閱讀Wikipedia article關於JAVA和C++的區別。一個區別是C++提供了「多種二進制兼容性標準」。你能解釋一下這意味着什麼,或者提供一個很好的參考。我有一個線索,這意味着用'C++編寫的二進制文件非常便攜,可以在任何操作系統或環境中使用。我想要得到確認和更精確。這是什麼一回事呢?二進制文件和兼容性標準信息 - C++/JAVA
如何生成二進制文件?是什麼讓它不便攜?
感謝和問候。
int
究竟是什麼意思?當用2個參數調用一個函數時 - 你是把第一個函數放在堆棧上還是最後一個;或者你有堆結構並指向它?你是否允許將未知數量的參數傳遞給函數?你如何對待字符串;數組?你是在堆棧,堆或私有內存塊中分配嗎?你是否打亂函數名稱(以允許重載)或將它們用作源代碼中的輸入?你是否在8位,16位或32位邊界的結構中對齊成員?
所有這些問題(以及更多)對於一個二進制程序如何調用另一個程序以及大多數情況下的答案並不那麼簡單都有很大不同。
Java在提供二進制佈局(畢竟它是一個虛擬機)方面並沒有提供太多的東西,而C++提供了很大的靈活性來適應幾乎所有可以想象的需求 - 因此它「提供了二進制兼容性標準「,不像Java(在你的例子中)
我不認爲這個答案解決了這個問題。 – 2012-07-15 09:46:58
好吧,不能幫助原始問題編輯後記:( – YePhIcK 2012-07-15 09:56:55
編輯並沒有改變任何重要的東西 – 2012-07-15 10:05:20
編譯的C++程序在不同的操作系統和不同的硬件之間不是很便攜,這是肯定的。可移植的C++源代碼可以針對不同的平臺進行編譯,並以相同的方式處理它們。至於這篇文章,它寫得含糊不清。我不知道微軟,安騰和GNU是如何標準的。他們是完全不同的事情開始。 – 2012-07-15 09:49:56