透析VS 2005中的C++語言
正因C++語言的極大靈活性和編譯簡單的特性,在sual Studio 2005進(jìn)行對C++語言進(jìn)行操作時(shí),編程時(shí)就再也不會需要雙下劃線了,這大大的為一些開發(fā)人員帶來了很多方便之處。
對于這一點(diǎn),我想大部分人都是這么認(rèn)為的。這種妥協(xié)帶來了以下結(jié)果:1、開發(fā)者發(fā)現(xiàn)這種語法不自然而且看上去也很不舒服。如果你將這么作,一種自然完美的語言將給你帶來巨大的自由,當(dāng)你編程時(shí)就再也不會需要雙下劃線了
Viusal Studio2005極大地豐富了它的庫,可以說是科研背后的清障機(jī)和加速器,對于這一點(diǎn),我想大部分人都是這么認(rèn)為的。它帶來的大量工具及新增的功能性函數(shù)使開發(fā)人員的生活越來越快樂、簡單。
但對于我來說,所有這些與Visual Studio2005在C++語言上做的改變相比卻都顯得是那么蒼白無力。這篇文章中,我著重?cái)⑹黾磳⑾蛴脩舭l(fā)行的Viusal Studio2005版本給C++帶來的變化。
Visual Studio.NET 2002在C++中引入了可擴(kuò)展的托管,這種擴(kuò)展帶來的關(guān)鍵詞以雙下劃線開始,例如__gc 和 __property。這個(gè)版本發(fā)行后的這些年來,我寫了大量帶有雙下劃線的代碼,我不得不承認(rèn)我從來都不喜歡這一點(diǎn)。
我完全明白真正的原因是什么:雙下劃線將關(guān)鍵詞標(biāo)志為特殊地?cái)U(kuò)展,以區(qū)分編譯器的標(biāo)準(zhǔn)編譯規(guī)則,在理論上,可以充分使用可擴(kuò)展的托管,使用其他的編譯器編譯它,這將忽略所有帶雙下劃線關(guān)鍵詞。
解決方案:微軟發(fā)現(xiàn)了一個(gè)解決方法來改變這種語言而不是替換這種語言。但是這種妥協(xié)帶來了以下結(jié)果:
1、開發(fā)者發(fā)現(xiàn)這種語法不自然而且看上去也很不舒服。
2、不能盡其所能。
例如,下面是托管C++語言聲明屬性的例子:
- public __gc class Foo
- {
- // hundreds of lines of code
- __property String* get_Text();
- // hundreds of lines of code
- __property void set_Text(String*);
- // hundreds of lines of code
- };
我相信,有良好編程習(xí)慣的程序員會將get與set緊挨者使用,并且會緊接著又聲明所有下面需要使用的變量。但是語言并不管這些,它不能提供封閉的括號來界定結(jié)構(gòu),來讓你聲明"這是一個(gè)作為單元的屬性"。所以當(dāng)它運(yùn)行時(shí)顯得不自然并且與其他.NET語言也格格不入。
面對這些你能做什么?唯一的方法是將C++語言與CLI自然地結(jié)合起來,反之也就是真正改變C++語言。如果你將這么作,一種自然完美的語言將給你帶來巨大的自由,當(dāng)你編程時(shí)就再也不會需要雙下劃線了。
【編輯推薦】