2013-06-05 33 views
1

我試圖用編程方式將C/C++代碼轉換爲C#。轉換預處理器指令時遇到了問題,尤其是#if#elif,因爲C/C++的預處理器接受更多條件。所以,這不會在C#中編譯。將C/C++ #if和#elif指令轉換爲C#

基於我讀過的C#預處理器只接受==,!=,&&||。 但是對於C,可以具有用於加法,減法,乘法,除法,按位運算,移位,比較和邏輯運算的算術運算符。此外,與C和C++不同,您不能將數值分配給符號; C#中的#if語句是布爾值,只測試符號是否已被定義。

我將能夠處理==!=,但其他條件如何?

+0

如何使用預處理器作爲預處理器來處理C – BLUEPIXY

回答

1

這是原始C#規範的設計決定。它被認爲是C++預處理器功能太強大了(國際混淆C代碼競賽有一個關於這個「特性」最糟糕的濫用的整個部分)。

所以基本上沒有。 C#沒有像C預處理器那樣的東西。

但是,有一些T4模板的概念,您可能會像使用C預處理器一樣濫用。這是代碼gen,而不是代碼的正在處理轉換.....

PS。你考慮過使用C++/CLI而不是C#.NET嗎?我假設你想在.NET中運行傳統的C/C++代碼。 C++/CLI是用於將代碼移植到.NET中的更好的語言。