将C / C ++ #if和#elif指令转换为C#

时间:2013-06-05 03:15:06

标签: c# c c-preprocessor preprocessor-directive

我正在尝试以编程方式将 C / C ++代码转换为C#。转换预处理程序指令时遇到问题,尤其是#if#elif,因为 C / C ++的预处理程序接受更多条件。所以,这不会在C#中编译。

根据我所读到的内容,C#预处理器只接受==!=&&||。 但是对于 C ,可以使用算术运算符进行加法,减法,乘法,除法,按位运算,移位,比较和逻辑运算。此外,与 C 和C ++不同,您无法为符号指定数值; C#中的#if语句是布尔值,仅测试符号是否已定义。

我将能够处理==!=,但其他情况如何?

1 个答案:

答案 0 :(得分:1)

这是原始C#规范的设计决定。它被认为是C ++预处理器太强大了(国际混淆C代码竞赛有一整段滥用这个“功能”)。

所以基本上没有。 C#与C预处理器没有任何区别。

但是有T4模板的概念,您可能会以与使用C预处理器相同的方式滥用它们。这是代码生成,而不是代码的进程转换.....

PS。您是否考虑过使用C ++ / CLI而不是C#.NET?我假设你想在.NET中运行传统的C / C ++代码。 C ++ / CLI是一种更好的语言,可用于将代码移植到.NET中。