免费注册 查看新帖 |

Chinaunix

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

[C++] pirntf用C编译器编译是链接错误,C++编译是语法错误,何解? [复制链接]

论坛徽章:
0
跳转到指定楼层
1 [收藏(0)] [报告]
发表于 2007-09-19 00:50 |只看该作者 |倒序浏览
错误信息如下:

H:\>g++ arithmetic.c
arithmetic.c: In function `int main()':
arithmetic.c:18: error: `pirntf' was not declared in this scope

H:\>gcc arithmetic.c
C:\DOCUME~1\2eye\LOCALS~1\Temp/ccYPaaaa.o:arithmetic.c.text+0xaa): undefin
ed reference to `pirntf'
collect2: ld returned 1 exit status

论坛徽章:
0
2 [报告]
发表于 2007-09-19 00:53 |只看该作者
不奇怪,C对于没有声明的函数,通常都可以编译过去的

论坛徽章:
0
3 [报告]
发表于 2007-09-19 00:56 |只看该作者
原帖由 飞灰橙 于 2007-9-19 00:53 发表
不奇怪,C对于没有声明的函数,通常都可以编译过去的

........

[ 本帖最后由 DennisRitchie 于 2007-9-19 01:03 编辑 ]

论坛徽章:
0
4 [报告]
发表于 2007-09-19 00:57 |只看该作者
原帖由 2eye 于 2007-9-19 00:50 发表
错误信息如下:

H:\>g++ arithmetic.c
arithmetic.c: In function `int main()':
arithmetic.c:18: error: `pirntf' was not declared in this scope

H:\>gcc arithmetic.c
C:\DOCUME~1\2eye\LOCALS~1 ...

楼主,错误的原因有可能是:你把printf拼作是pirntf了,检查一下!

论坛徽章:
0
5 [报告]
发表于 2007-09-19 00:59 |只看该作者
原帖由 DennisRitchie 于 2007-9-19 00:57 发表

楼主,错误的原因有可能是:你把printf拼作是pirntf了,检查一下!


kao! 一向觉得楼上十分不堪,这里稍稍佩服一下

论坛徽章:
0
6 [报告]
发表于 2007-09-19 01:03 |只看该作者
原帖由 飞灰橙 于 2007-9-19 00:59 发表


kao! 一向觉得楼上十分不堪,这里稍稍佩服一下

既然你的语气缓和下来,那就算了吧,我也收回对你的不敬的词语!

PS:那天是你先惹我的,我不会故意和别人对着干的。

论坛徽章:
0
7 [报告]
发表于 2007-09-19 15:56 |只看该作者
原帖由 飞灰橙 于 2007-9-19 00:53 发表
不奇怪,C对于没有声明的函数,通常都可以编译过去的


那么编译器的查错功能岂不是很差?而且#include不也没有必要了吗?反正不声明也可以编译,只要最后链接正确就可以了。

论坛徽章:
0
8 [报告]
发表于 2007-09-19 16:20 |只看该作者
gcc 是有编译选项的, -w 或者 -Wall 等来决定要不要显示编译错误
gcc 默认是不显示的
你试试
gcc -Wall -Werror arithmetic.c

[ 本帖最后由 hempel 于 2007-9-19 16:24 编辑 ]

论坛徽章:
3
2015年迎新春徽章
日期:2015-03-04 09:56:11数据库技术版块每日发帖之星
日期:2016-08-03 06:20:00数据库技术版块每日发帖之星
日期:2016-08-04 06:20:00
9 [报告]
发表于 2007-09-19 16:28 |只看该作者
pirntf是个什么函数
.........

论坛徽章:
0
10 [报告]
发表于 2007-09-19 16:32 |只看该作者
原帖由 2eye 于 2007-9-19 15:56 发表


那么编译器的查错功能岂不是很差?而且#include不也没有必要了吗?反正不声明也可以编译,只要最后链接正确就可以了。


编译器其实知道的,比如gcc会给出warning。

关于#include有无必要,建议试一下这个例子, 体会下使用和不使用#include结果为什么不同?


  1. //#include <stdlib.h>

  2. int main()
  3. {
  4.     printf("%d\n", abs(3.0) );
  5.     return 0;
  6. }

复制代码
您需要登录后才可以回帖 登录 | 注册

本版积分规则 发表回复

  

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

清除 Cookies - ChinaUnix - Archiver - WAP - TOP