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