记得当初从C语言学习开始就使用scanf,关于scanf的用法也略知一二,对使用scanf出现的问题并未进行深刻探究,故笔者打算对scanf实现进行探究。
如何找到scanf源码
关于VC中的CRT代码在 VS目录下的\VC\crt\src中,我们就先把scanf.c扒出来。
int __cdecl scanf (
const char *format,...
分类:
其他好文 时间:
2015-06-17 09:48:39
阅读次数:
166
.. 参数传递顺序 1.从右到左依次入栈:__stdcall,__cdecl,__thiscall,__fastcall 2.从左到右依次入栈:__pascal 主要说明__stdcall 和 __cdecl 区别? 1...__stdcall 被调用的 函数本身负责堆栈平衡 2...__cd...
分类:
其他好文 时间:
2015-06-15 22:22:11
阅读次数:
173
今天用VS2013新建了一个工程,生成时出现很多怪异的链接错误,比如:error LNK2019: unresolved external symbol "__declspec(dllimport) public: static class MTString __cdecl MTString::fr...
分类:
其他好文 时间:
2015-06-15 21:51:38
阅读次数:
104
在C和C++中有几种调用约定:__cdecl,__stdcall,__fastcall,__thiscall,__clrcall,__vectorcall...
分类:
编程语言 时间:
2015-06-15 18:46:33
阅读次数:
175
各类关于VC的书中都多少写到:
1、_stdcall调用约定:函数的参数自右向左通过栈传递,被调用的函数在返回前清理传送参数的内存栈。
2、__cdecl是C和C++程序的缺省调用方式。每一个调用它的函数都包含清空堆栈的代码,所以产生的可执行文件大小会比调用_stdcall函数的大。函数采用从右到左的压栈方式。注意:对于可变参数的成员函数,始终使用__cdecl的转换方式。
__...
分类:
其他好文 时间:
2015-06-11 17:11:39
阅读次数:
126
由C代码到汇编代码来看看cdecl、stdcall、fastcall三个调用约定的区别: int __stdcall add1(int x,int y)
{ return x + y;
}
int __cdecl add2(int x, int y)
{ return x + y;
}
int __...
分类:
其他好文 时间:
2015-06-04 13:44:53
阅读次数:
168
ASM在学习汇编之前,我们要介绍一下常用的函数调用约定,以便我们对于一些指令的理解。函数调用约定常见的函数调用约定:stdcall , cdecl, fastcall, thiscall, naked call1, __cdecl(C调用约定.)C/C++ 缺省调用方式 1)压栈顺序: 函数参数从右...
分类:
其他好文 时间:
2015-06-02 19:52:45
阅读次数:
141
在编译文章:
使用GetAdaptersAddresses函数获取物理MAC地址中的代码时,出现以下错误:
错误 1 error LNK2005: “void * __cdecl operator new(unsigned int)” (??2@YAPAXI@Z) 已经在 LIBCMTD.lib(new.obj) 中定义 F:\CcProjects\获取网卡物理地址MAC地址\获取网卡物...
分类:
其他好文 时间:
2015-05-31 09:07:48
阅读次数:
1106
C名称修饰规则 1.对于使用__cdecl调用约定的函数,在函数名称前加一下划线,不考虑参数和返回值。 2.对于使用__fastcall调用约定的函数,在函数名称前后各加一@符号,后跟参数的长度,不考虑返回值。 例如 extern “C” int __fastcall Test(int ...
分类:
编程语言 时间:
2015-05-22 23:56:26
阅读次数:
455
使用环境 VC6.0
新建一个和你需要修改的插件的名称相同的工程(这是会生成一个新的ID)如名称为xxxxxOCX
修改工程中的文件
xxxxxOCX.cpp 中的
const GUID CDECL BASED_CODE _tlid =
{ 0x5ce50e08, 0xfb49, 0x4c4a, { 0x90, 0x18, 0xd9, 0xb9, 0x51, 0xc2, 0x95, 0x...
分类:
其他好文 时间:
2015-05-21 12:50:48
阅读次数:
148