1

プログラムでC /C++ コードを C#に変換しようとしています。#ifプリプロセッサ ディレクティブを変換するときに、特にC#elif /C++のプリプロセッサがより多くの条件を受け入れるため、問題が発生しました。したがって、これは C# ではコンパイルされません。

私が読んだ内容に基づいて、C# プリプロセッサは、、、、および のみを==受け入れます。しかしCでは、加算、減算、乗算、除算、ビット演算、シフト、比較、および論理演算の算術演算子を使用できます。さらに、Cや C++ とは異なり、シンボルに数値を割り当てることはできません。C#のステートメントはブール値であり、シンボルが定義されているかどうかのみをテストします。!=&&||#if

とは言えますが==!=その他の条件はどうですか?

4

1 に答える 1

1

これは、元の C# 仕様の設計上の決定でした。C++ プリプロセッサが強力すぎると見なされました (国際難読化 C コード コンテストには、この「機能」の最悪の悪用に関するセクション全体があります)。

基本的に、いいえ。C# には、C プリプロセッサのようなものはありません。

ただし、T4 テンプレートの概念があり、C プリプロセッサと同じように悪用される可能性があります。これは、コードのインプロセス変換ではなく、コード生成です.....

PS。目的のために、C#.NET ではなく C++/CLI を使用することを検討しましたか? レガシ C/C++ コードを .NET でインプロセスで実行する必要があるとします。C++/CLI は、コードを .NET に移植するために使用する言語としてははるかに優れています。

于 2013-06-05T03:22:07.177 に答える