我需要一些帮助: 在编译时,我不断收到错误4047
warning C4047: 'return' : 'int (__cdecl *)(const char *,...)'
与'int *'
我怎么能摆脱这个问题?
int (*GetPrintfPointer(void))(const char *format, ...)
{
int *pPrintf;
pPrintf = (int *)printf;
return pPrintf;
}
int (*GetPutsPointer(void))(const char *str)
{
int *pPuts;
pPuts = (int *)puts;
return pPuts;
}
答案 0 :(得分:1)
我认为这就是你要找的东西
int f(const char *){
return 1;
}
int (*GetPutsPointer(void))(const char *str)
{
return f;
}
对您f
来说是puts
或printf
。希望它有所帮助。
答案 1 :(得分:1)
使用typedef时很简单:
#include "stdio.h"
typedef int (*pPrintf)(const char*,...);
typedef int (*pPuts)(const char*);
pPrintf getPrintf(void)
{
return &printf;
}
//or if this is what you've tried to do:
int* getPrintfAsIntPointer(void)
{
return (int*)&printf;
}
pPuts getPuts()
{
return &puts;
}
int main()
{
getPrintf()("%s\n","hello world");
getPuts()("hello world\n");
return 0;
}