2012-09-20 68 views
0

在我的代碼中,我一直在重寫static_cast<int *>大約一百萬次,是否有重新定義關鍵字的方法,以便每當我調用它時它都做同樣的事情?創建「快捷方式」類似於宏的定義

例如

cast會做同樣的事情,static_cast<int *>

+0

當你說重寫,你確定正則表達式不能幫助嗎? – chris

+0

我建議不要這樣做 - 隨着時間的推移,這使得代碼無法讀取 - 相反,我建議Mavis Beacon,並學會更快地輸入:-)(嚴重時我輸入100wpm左右) –

+0

如果有任何安慰,你可以配置IDE, 「sc」或任何你想要的,點擊一個熱鍵,並將其擴展到'static_cast <|>'。 – chris

回答

1

static_cast有一個好處,即C++程序員可以準確識別它是什麼,而無需去找到#define或其他語句。我強烈建議您繼續使用static_cast

但是,我的假設是您的問題是所需的按鍵次數,所以最好的解決方案是使用支持宏的文本編輯器。這樣一來,該結束了保存代碼的功能使用標準static_cast<T>(x)語法,但你可能只需要輸入一些諸如[小號Ç]標籤牛逼標籤X標籤

有關如何操作的信息將在此類編輯的文檔中找到。我不是那些高度可定製編輯的忠實粉絲,所以具體內容超出了我的理解。

+0

謝謝,我想堅持這一點。 –

1

問計更簡單的方式做一些危險的&hellip;

是的,有很多的方式來完成你要求什麼,包括

  • C++模板,

  • 宏定義,

  • 編輯器的快捷方式,

  • 定製預處理,

  • 訓練有素的猴子修復了代碼。

但是,您所完成的所有工作都是爲了讓您的代碼更加友好。

相反,試圖找出你如何經常丟失類型信息,這樣你就必須手工把它放回去,可以這麼說。

一般的解決方案是,非常簡單地,而不是首先扔掉類型信息。

+0

我看不出最後3種解決方案如何減少代碼。另外:我可以有猴子嗎? (她是否也修復錯誤?) –

1

您的意思是?

#define SCAST(T,X) static_cast<T>(X); 

我應該警告你,雖然通常這樣定義的過度使用會使你的代碼變得模糊和難以理解。

更重要的是,你必須注意用宏,因爲它們可能會導致很難找到,例如錯誤:

#define SQUARE(X) = X*X; 

那麼,如果你調用此方法x++,預處理器會做一個文字替換和你將會以(x++)*(x++);結束,這意味着它不會是您正在尋找的答案,並且讓事情變得更糟,因爲替換髮生在幕後,您將很難找到原因。

我會建議你改爲查看模板函數或者只是內聯幫助函數,這樣可以安全並避免我指出的問題。