Using C++
posted on 2009-10-29 18:23 codejie 閱讀(1182) 評論(10) 編輯 收藏 引用 所屬分類: C++ 、隨筆而已
嘿嘿,我一直不會寫C,從來都木有學過 @_@ 回復 更多評論
我記得當年你給我推薦過一本書,講的是C++內存的布置。因為要實現OOP的緣故,類的封裝開銷確實要比C大。我相信你還記得這個吧?對于臺式機來說,現在這點內存已經不算啥了。對于嵌入式系統,操作系統內核來說,這點開銷還是很多人在乎的……我現在工作的板子,內存才48M呢。整個Linux跑起來還要加載各種驅動模塊加上應用程序,JAVA虛擬機……內存很重要的 回復 更多評論
@Liu順便說一句,我們板子的存儲空間只有16M,其中2M可以供應用程序讀寫。14M包括整個操作系統加上應用程序(ftpd,tftpd,tr69,httpd,dhcpd還有其他各種統計工具監控工具時間同步軟件防火墻過濾規則匹配等等等等),web的網頁圖片和一個簡單的XML數據庫……不節約用能行么 回復 更多評論
關于第2點不解,看英文描述不是說:在函數體外面聲明了動態數組。 C99支持動態數組,但可能不允許作為全局變量定義。 你的解說莫明其妙! 回復 更多評論
@Liu你的run環境比我這邊可憐好多。。。我們怎么也是兩個扳子,8G內存,4個CPU,24個核,還有一個不知道大小的Shared Memory。。。在我看來,這樣的條件下,完成可以使用C++來編寫程序了。目前從我得到的情況看,用C的緣由是因為你們A國人,只會用C。。。。我現在在努力把自己的腦袋變成C腦袋。。。 回復 更多評論
@wu嗯,你說的對,這個錯誤應該是由于動態數組的原因導致的。我不知道C99標準定義了什么,但我用GCC 3.46還是不支持的。想來比較好理解,程序加載時,全局變量在開始就初始了,由于在初始時并沒有初始順序的概念,因此可能存在不知道數組大小的情況,這樣,動態數組就無法初始,編譯錯誤也指出了問題所在。不知道我這樣理解是否正確,謝謝指點。 回復 更多評論
@codejie你們是局端設備,配置當然不是我們這些用戶端設備可以比擬的。不過你們真的可以用C++了,就是估計以前的傳統都是C,現在想改也難阿…… 回復 更多評論
所謂動態數組也是通過棧空間實現的,全局變量肯定不成啦。 其實LENGTH已經被定義成常量了,在C++可以用作定義靜態數組長度了, 但在C里面好像還是不可以吧?既然報了這個錯,我猜她是支持動態數組的, int fun(int n) {char array[n];} // 定義時動態,使用期間不可擴縮 回復 更多評論
@Liu是啊,只有我迎合工作,沒有工作迎合我之說啊~ 回復 更多評論
◎wu是的,我知道C++這樣是OK的。。。 回復 更多評論