免费注册 查看新帖 |

Chinaunix

  平台 论坛 博客 文库
最近访问板块 发新帖
查看: 2836 | 回复: 5
打印 上一主题 下一主题

[C] 关于C语言连接器报错 [复制链接]

论坛徽章:
0
跳转到指定楼层
1 [收藏(0)] [报告]
发表于 2014-06-18 22:29 |只看该作者 |倒序浏览
如题本是书中的一例程 用 Microsoft Visual C++ 实现一下
编译时候无错误,警告 链接时候报了一个错
代码如下:

/*binary.c --以二进制形式输出整数*/
#include <stdio.h>
void to_binary(unsigned long n);

int main(void)
{
        unsigned long number;
        printf("Enter an integer(q to quit): \n");
        while (scanf("%ul",&number) == 1)
        {
                printf("Binary equivalent: ");
                to_binary(number);
                putchar('\n');
                printf("Enter an integer (q to quit): \n");
        }
        printf("Done.\n");

        return 0;
}

void to_binary(unsigned long n)
{
        int r;
        r = n % 2;
        if(n >= 2)
                to_binary(n / 2);
        purchar('0' + r);

                return ;
}

链接时候报错信息如下:
Linking...
binary.obj : error LNK2001: unresolved external symbol _purchar
Debug/binary.exe : fatal error LNK1120: 1 unresolved externals
执行 link.exe 时出错.

本人刚自学C 请勿见怪

论坛徽章:
44
15-16赛季CBA联赛之浙江
日期:2021-10-11 02:03:59程序设计版块每日发帖之星
日期:2016-07-02 06:20:0015-16赛季CBA联赛之新疆
日期:2016-04-25 10:55:452016科比退役纪念章
日期:2016-04-23 00:51:2315-16赛季CBA联赛之山东
日期:2016-04-17 12:00:2815-16赛季CBA联赛之福建
日期:2016-04-12 15:21:2915-16赛季CBA联赛之辽宁
日期:2016-03-24 21:38:2715-16赛季CBA联赛之福建
日期:2016-03-18 12:13:4015-16赛季CBA联赛之佛山
日期:2016-02-05 00:55:2015-16赛季CBA联赛之佛山
日期:2016-02-04 21:11:3615-16赛季CBA联赛之天津
日期:2016-11-02 00:33:1215-16赛季CBA联赛之浙江
日期:2017-01-13 01:31:49
2 [报告]
发表于 2014-06-19 07:26 |只看该作者
purchar

论坛徽章:
324
射手座
日期:2013-08-23 12:04:38射手座
日期:2013-08-23 16:18:12未羊
日期:2013-08-30 14:33:15水瓶座
日期:2013-09-02 16:44:31摩羯座
日期:2013-09-25 09:33:52双子座
日期:2013-09-26 12:21:10金牛座
日期:2013-10-14 09:08:49申猴
日期:2013-10-16 13:09:43子鼠
日期:2013-10-17 23:23:19射手座
日期:2013-10-18 13:00:27金牛座
日期:2013-10-18 15:47:57午马
日期:2013-10-18 21:43:38
3 [报告]
发表于 2014-06-19 08:40 |只看该作者
purchar('0' + r);    putchar('0' + r);

论坛徽章:
0
4 [报告]
发表于 2014-06-19 11:31 |只看该作者
还是不够细心, ....丢人了我  谢谢回复,但是弱弱问一句编译器不会发现此类问题么?为什么会在链接的时候会出现错误 回复 2# windoze


   

论坛徽章:
7
巳蛇
日期:2014-04-10 08:54:57白羊座
日期:2014-04-22 20:06:262015年亚洲杯之沙特阿拉伯
日期:2015-02-10 14:18:532015年辞旧岁徽章
日期:2015-03-03 16:54:152015亚冠之吉达阿赫利
日期:2015-06-02 11:34:112015亚冠之武里南联
日期:2015-06-24 12:13:082015亚冠之阿尔纳斯尔
日期:2015-08-03 09:08:25
5 [报告]
发表于 2014-06-19 12:27 |只看该作者
回复 4# JoinI

你开警告的话,编译的时候就会有警告。
函数不先申明(函数的定义在编译阶段不影响它的调用)也是可以调用的。函数声明只是用来帮助编译器进行类型检查的,如果编译器在碰到函数调用前没有看到函数声明,它只是没办法保证函数调用的类型得到检查但是不会出错,开了警告的话会有警告。实际上链接的时候才需要函数的定义。所以如果链接的时候找不到函数的定义就会报错。
   

论坛徽章:
44
15-16赛季CBA联赛之浙江
日期:2021-10-11 02:03:59程序设计版块每日发帖之星
日期:2016-07-02 06:20:0015-16赛季CBA联赛之新疆
日期:2016-04-25 10:55:452016科比退役纪念章
日期:2016-04-23 00:51:2315-16赛季CBA联赛之山东
日期:2016-04-17 12:00:2815-16赛季CBA联赛之福建
日期:2016-04-12 15:21:2915-16赛季CBA联赛之辽宁
日期:2016-03-24 21:38:2715-16赛季CBA联赛之福建
日期:2016-03-18 12:13:4015-16赛季CBA联赛之佛山
日期:2016-02-05 00:55:2015-16赛季CBA联赛之佛山
日期:2016-02-04 21:11:3615-16赛季CBA联赛之天津
日期:2016-11-02 00:33:1215-16赛季CBA联赛之浙江
日期:2017-01-13 01:31:49
6 [报告]
发表于 2014-06-19 13:34 |只看该作者
回复 4# JoinI

想在编译期就发现这个错误最简单的办法就是——把文件名改成"file.cpp"
您需要登录后才可以回帖 登录 | 注册

本版积分规则 发表回复

  

北京盛拓优讯信息技术有限公司. 版权所有 京ICP备16024965号-6 北京市公安局海淀分局网监中心备案编号:11010802020122 niuxiaotong@pcpop.com 17352615567
未成年举报专区
中国互联网协会会员  联系我们:huangweiwei@itpub.net
感谢所有关心和支持过ChinaUnix的朋友们 转载本站内容请注明原作者名及出处

清除 Cookies - ChinaUnix - Archiver - WAP - TOP