当前位置: 代码迷 >> C语言 >> 为什么自己对应的printf不会和标准库stdio.h中的printf发生冲突呢?
  详细解决方案

为什么自己对应的printf不会和标准库stdio.h中的printf发生冲突呢?

热度:375   发布时间:2008-03-11 14:28:55.0
为什么自己对应的printf不会和标准库stdio.h中的printf发生冲突呢?
// 自己实现printf:
typedef char* va_list;

#include <stdarg.h>
#include <stdio.h>

int printf(char* format,...)
{
va_list ap;
va_start(ap, format);
int n = vprintf(format,ap);
va_end(ap);
return n;
}

int main()
{
    printf("sd\n");
    return 0;
}
搜索更多相关的解决方案: printf  stdio  

----------------解决方案--------------------------------------------------------
会冲突啊,如下:
D:\My Documents\bbs\c_test>type my_printf.c
#include <stdarg.h>
#include <stdio.h>
typedef char* va_list;
int printf(char* format,...)
{
va_list ap;
va_start(ap, format);
int n = vprintf(format,ap);
va_end(ap);
return n;
}

int main()
{
    printf("sd\n");
    return 0;
}

D:\My Documents\bbs\c_test>gcc my_printf.c
my_printf.c:5: error: conflicting types for 'printf'
my_printf.c:5: error: conflicting types for 'printf'
----------------解决方案--------------------------------------------------------
不冲突会不会是因为include查找路径的顺序造成的呢????
----------------解决方案--------------------------------------------------------
不冲突可能是因为链接目标文件时按某个顺序查找,找到后就返回了,猜测查找顺序是先在用户源代码生成的目标文件中查找,找不到就去C运行时库中找。
----------------解决方案--------------------------------------------------------
回复 2# 的帖子
你使用的是什么编译器,怎么会冲突呢??
----------------解决方案--------------------------------------------------------
我这里也发生冲突
$ cc pf.c
pf.c:7: error: conflicting types for 'printf'
pf.c:7: error: conflicting types for 'printf'

环境:freebsd  cc编译
----------------解决方案--------------------------------------------------------
一般都是冲突的..因为编译器不知道你调用了那个函数...
----------------解决方案--------------------------------------------------------
  相关解决方案