Browse by Tags
All Tags »
C++ (RSS)
前几天写代码的时候遇到了一个十分诡异的编译错误。对于下面的代码,你能够发现问题在那里吗? 1: #define test(a, b, c) \ 2: a; \ 3: if (b) \ 4: c 编译器给出了下面这个错误信息: testdefine.cpp(8) : error C2059: syntax error : 'if' 意思是if语法错误。显然这个不是真正原因。实际错误的原因其实很简单,在if的上一行的\那里多了一个空格,现在我把整个代码选择上,就比较容易看得出来问题了: 去掉多余的空格,再次编译,通过。
Read More...
经常看到有朋友问到类似的问题,问题本身不复杂,但是答案不是特别明显,这里我把解决方法 Post 出来和大家共享一下,希望能够有所帮助。 假设我们有下面的 A.cs 文件: using System; using System.Runtime.InteropServices; [InterfaceType(ComInterfaceType.InterfaceIsDual)] public interface IA {
Read More...
现在做 .NET Framework 的开发的朋友应该是越来越多了, 但是可能并非人人都对 MSCOREE.DLL 非常了 解 。而事实上,毫不夸张地说, MSCOREE.DLL 是 .NET Framework 中最为核心的 DLL 之一,没有这个 DLL ,托管程序根本无法开始执行起来,但是由于这个 DLL 藏在 System32 目录下,根本无人问津,可以说是有点委屈了这位 .NET Framework 中的幕后英雄。本文主要讨论 MSCOREE.DLL 的几大作用,以及讨论 MSCOREE.DLL
Read More...
因为经常需要和不同的 Calling Convention 打交道,前段时间整理了一下它们之间的区别,如下: 清理堆栈 参数压栈顺序 命名规则 (MSVC++) 备注 Cdecl 调用者 (Caller) 从右往左 FuncName 因为是调用者清理 Stack ,因此允许变参 ( 如 printf) Pascal 被调用者 (Callee) 从左往右 已不再支持 __pascal, __fortran, __syscall Stdcall 被调用者 (Callee) 从右往左 _FuncName@N
Read More...