C#无论如何都是C的超集,比如Objective-C或C++?有没有办法用构造这样的编译器标志在线编译C?
总之,没有.
没有任何有意义的方式.它的灵感来自C(以及其他),但它们是完全不同的语言.
就语法而言,C#来自"c-like"系列,但就架构而言,它更像是Java(没有指针[好吧,如下所述,你可以使用它们,但是大多数人都不知道或者关心那个],绑定数组,垃圾收集内存等).
您可以在C++中获得更多,但不在核心中.
我们这样说:
C
而C#
像类似rm -rf . /
和# rm -rf . /
相似
简而言之,没有C不是C#的子集.许多控制结构的外观基于C.比如,for-loops,switch,while等等.同时,C#禁止具有潜在危险的构造,例如在忘记中断时从交换机中的情况下掉落;或者将整数作为if条件放置,其中布尔值是预期的.上面的引用意味着C#和C看起来非常相似,但转化为截然不同的结果.C不会阻止你从你的分区中删除所有东西,C#会保护你不要错误地这样做,比喻说.
在另一个级别,C允许您键入指向整数的指针,推送它们,转回然后访问存储在该指针中的内存位置.C不会保护您不会访问未分配的内存.你会崩溃 - 充其量.另一方面,C#会有例外情况,当您执行访问对象时会注意到引用空引用.