我正在尝试以编程方式将 C / C ++代码转换为C#。转换预处理程序指令时遇到问题,尤其是#if
和#elif
,因为 C / C ++的预处理程序接受更多条件。所以,这不会在C#中编译。
根据我所读到的内容,C#预处理器只接受==
,!=
,&&
和||
。
但是对于 C ,可以使用算术运算符进行加法,减法,乘法,除法,按位运算,移位,比较和逻辑运算。此外,与 C 和C ++不同,您无法为符号指定数值; C#中的#if
语句是布尔值,仅测试符号是否已定义。
我将能够处理==
和!=
,但其他情况如何?
答案 0 :(得分:1)
这是原始C#规范的设计决定。它被认为是C ++预处理器太强大了(国际混淆C代码竞赛有一整段滥用这个“功能”)。
所以基本上没有。 C#与C预处理器没有任何区别。
但是有T4模板的概念,您可能会以与使用C预处理器相同的方式滥用它们。这是代码生成,而不是代码的进程转换.....
PS。您是否考虑过使用C ++ / CLI而不是C#.NET?我假设你想在.NET中运行传统的C / C ++代码。 C ++ / CLI是一种更好的语言,可用于将代码移植到.NET中。