Inside Microsoft.NET IL Assembler中的第一个例子

每次下定决心研读《Inside Microsoft.NET IL Assembler》都因在敲完第一个例子之后不能得到预期的结果而放弃了。我遇到的问题是,不论输入的是数字,抑或是非数字,程序总是返回How rude,然后结束。这次我决定不再放弃了,我一定要找出原因,为什么作者能够正常运行,而我们这里就不行。最终让我找到了,在sscanf函数的声明中添加preservesig就能得到预期的效果,如下: 

.method public static pinvokeimpl("msvcrt.dll" cdecl) vararg int32 sscanf(string,int8*) cil managed preservesig{}

我猜想可能是作者当时使用的ILASM跟我们现在的不同了,我使用的是VS2010自带的ILASM,而作者这本书因该写于2002年前后,想来这期间ILASM有了修改也是正常的事情。抑或者作者犯了个错误,不知道了。反正加了preservesig就可以了!


希望想读这本书,而又遇见跟我同样问题的人,不要因为这个问题而止步。

你可能感兴趣的:(.NET)