在C#中,尝试编译以下代码会产生错误“涉及'A‘和’A.B‘的循环基类依赖”
public class A : A.B
{
public class B { }
}
然而,我通过一个反编译器查看了一个第三方DLL,并看到了这个结构。这怎麽可能?我只能假设第三方DLL是用其他.Net语言编写的,但是哪种语言和语法是什么?
我有一些带有循环的C代码:
for(int i=0; i<1000; i+=ceil(sqrt(i)))
{
do stuff that could benefit from loop unrolling;
}
我打算使用宏命令告诉GCC展开循环,但我想确保在这种情况下它确实会展开循环(因为增量不是1,但它仍然可以预处理和展开)。
可以让GCC在经过优化后输出包含代码的.C文件吗?(希望包括在程序集级优化之前使用-O进行的任何优化)?
我知道我可以使用程序集输出来确认这一点,但我更希望在C中看到一些东西--对我来说,阅读和理解起来要容易得多。
当我打开像ILSpy或dotPeek这样的工具时,我可以选择查看反编译的C#或IL。
当您查看反编译源时,反编译器是否将IL反向工程成反编译的C#?
如果是这样的话,那么反编译者将如何推断像下面这样的IL?(请注意,这是第一语言构造的一个微不足道的例子,它很难从IL中推断出来,而不是反编译器的实际输出):
IL_0000: nop // Do nothing (No operation)
IL_0001: ldstr "C" // Push a string object for the literal string
IL