none
自行声明MS VC头文件中的函数,有什么隐患? RRS feed

  • 问题

  • //#include <stdio.h>

    //#include <conio.h>

    int getch(); int __cdecl printf(const char * _Format, ...); // stdio.h defined // work with Enter_key to continue //getchar(); // conio.h // just hit any key to continue //getch(); int main(int argc, char *argv[]) { printf("Address of function getch is 0x%X\n", getch); getch(); return 0; }

    以上,是我编写的一个程序,目标文件为func.exe

    我自行添加了对于printf和getch的函数声明,运行正常;与添加stdio和conio两个头文件效果一致。

    我打开两个头文件看过,里面有一大堆guard macro定义和预处理的代码。

    我想请教各位,我的代码在移植或者其它什么情况下,会导致什么样的后果,因为MS判断的那些条件不是每个都能猜测到~比如这个_CRTDBG_MAP_ALLOC,不能准确猜出它的意义把~

    另外,我能否通过获得某个函数(比如printf)的地址来获得msvcrt.dll的模块地址呢?前提是我知晓这个函数在dll中的相对地址。

    我只是做实验,实际工作中不会这样写代码的,还请您多多指教!

    Best wishes!


    No music, no way coolchae@gmail.com

    2013年5月27日 9:47

答案

全部回复