关于C语言自定义printf函数名的问题

来源:百度知道 编辑:UC知道 时间:2024/05/24 23:44:44
我是C语言的初学者,我把StdIO.H中关于printf的定义拷到了我的C程序中,并将所有的printf改名为MyOutputFunction,如下(Text2.C):
/* Define _CRTIMP */

#ifndef _CRTIMP
#ifdef _DLL
#define _CRTIMP __declspec(dllimport)
#else /* ndef _DLL */
#define _CRTIMP
#endif /* _DLL */
#endif /* _CRTIMP */

/* Define __cdecl for non-Microsoft compilers */

#if ( !defined(_MSC_VER) && !defined(__cdecl) )
#define __cdecl
#endif

/* Define printf */
_CRTIMP int __cdecl MyOutputFunction(const char *, ...);

/* Preprogram */
int a=1;

main()
{
MyOutputFunction("Output!%d\n",a);
}

______________________________________________
编译时没有问题,但连接时出错了:
--------------------Configuration: Text2 - Win32 Debug--------------------
Linking...
Text2.obj : error LNK2001: unresolved external symbol _MyOutputFunction
Debug/Text2.exe : fatal error LNK1120: 1 unresolved externals

这种方法是不可取的,头文件中不存在函数的定义,只有函数的声明,而你将函数的声明更改了,但是函数的定义并没有变,还是原来的printf,但是由于你这样的改动,导致原来的函数名(printf)也无法使用了!

建议不要一更改任何一个标准头文件的值。

********************************************

标准库函数的定义不可以更改,如果标准库函数不能满足你的需要,可以自定义一个函数。

这样能行吗?

硬是没看懂。。