摘要:关于C++动态库导出API相关的这几个关键字,一直困扰了许久,每次在调用C++动态库接口函数的时候,我都不得不花一些时间去“试”。但是用过之后就忘了……首先解释一下 _cdecl 和 __stdcall所代表的意义:Cdecl:调用方清理堆栈。这使您能够调用具有 varargs 的函数(如 Printf),使之可用于接受可变数目的参数的方法;StdCall:被调用方清理堆栈。这是使用平台 invoke 调用非托管函数的默认约定。我花了一些时间专门对以上这个关键字做了一些测试。结果如下(没有使用def文件):API函数声明:__declspec(dllexport) void MyMethod(
阅读全文
06 2011 档案
摘要:今天在阅读《CLR via C#》,书中说“使用foreach语句时,会在finally块中调用IEnumerator对象的Dispose方法”(第20章 异常和状态管理,P434)自己很奇怪的是,在编译foreach语句时也会生成try/finally语句块吗?会吧,不会吧!!于是自己做了如下实验: static void ILDiscoveryForeach() { var someList = Enumerable.Range(0, 10); foreach (var item in someList) ...
阅读全文
摘要:最近因为重装系统,自己从Foxmail改为使用Outlook2010,发现Office的Outlook没有像Foxmail的邮件“再次发送”功能。因为公司每天要求我们写日报(Daily Report),以前使用Foxmail的时候,我每次都会选中昨天的日报邮件,然后点击“再次发送”,Foxmail会创建一封跟昨天日报格式一模一样的邮件,我只需要改改其中的内容,其他的收件人、抄送人、主题、签名等均不用改变。现在使用Outlook就麻烦多了,我只能点击“全部答复”,然后得把主题里面的“答复”字样的字符串删除,然后还得修改正文里面多出来的东西。能不能利用Outlook现有的东西,实现像Foxmail
阅读全文
摘要:在工作当中,经常会用到反射技术来实现对一些对象的序列化\反序列化的功能。以下是对于FieldInfo这个类型的两点心得:假设有如下结构 public struct SomeStruct { public int publicField; private int privateField; public static int staticField; }一、使用BindingFlags获取一个类或者结构特定的字段以下是一段测试代码: private static void TestGetFields() { ...
阅读全文
摘要:quark 标签: C# IL这是本系列的第一篇文章,这个系列主要是想和大家分享自己在学习.NET的过程中关于IL语言的一些心得体会。C#语言在3.0以后,在语言创新上已经上升到了一个新的台阶,扩展方法、匿名函数、Lambda表达式、Linq等等。我们知道,.net framework 3.0/3.5都是基于CLR2.0基础之上的,CLR在功能上并没有任何的提升。上面提到的新的语法特性,在IL语言级别,都会被脱掉“华丽的外衣”,露出其真实的面目——类、类的数据成员、类的成员函数。其他神马都是浮云。.net程序员是否需要学习IL语言,已经有很多大牛已经讨论过了,这当然取决于个人需求和兴趣,但是个
阅读全文