2013-06-05 2 views
1

Я пытаюсь преобразовать C/C++ код в C# программно. Я столкнулся с проблемой при преобразовании директив препроцессора, особенно с #if и #elif, поскольку препроцессор для C/C++ принимает больше условий. Таким образом, это не будет компилироваться в C#.Преобразование директивы C/C++ #if и #elif в C#

Исходя из того, что я читал C# препроцессор принимает только ==, !=, && и ||. Но для C возможно иметь арифметические операторы для сложения, вычитания, умножения, деления, побитовых операций, сдвигов, сравнений и логических операций. Кроме того, в отличие от C и C++ вы не можете присвоить числовое значение символу; оператор #if в C# является логическим и проверяет, был ли символ определен или нет.

Я смогу обрабатывать == и !=, но как насчет других условий?

+0

Как использовать предварительную обработку препроцессора для C – BLUEPIXY

ответ

1

Это было дизайнерское решение оригинальной спецификации C#. Было сочтено, что препроцессор C++ был слишком сильным (Международный конкурс Obfuscated C Code имеет целый раздел для худшего злоупотребления этой «функцией»).

Так что, в принципе, нет. C# не имеет ничего общего с препроцессором C.

Однако существует концепция шаблонов T4, которую вы можете злоупотреблять так же, как и с препроцессором C. Это код gen, а не преобразование процесса кода .....

PS. Вы рассматривали использование C++/CLI в отличие от C# .NET для своих целей? Я предполагаю, что вы хотите запустить устаревший код C/C++ в процессе в .NET. C++/CLI - гораздо лучший язык для переноса кода в .NET.

 Смежные вопросы

  • Нет связанных вопросов^_^