那个“注意版本”是个半吊子,还好意思称“刚好是我的专业”呢
所有跟贴
·
加跟贴
·
新语丝读书论坛
送交者: Yush 于 2009-03-15, 16:38:21:
引用:
例1是数据溢出的很好例子,完全可以在书中适当的地方展开来写。原文
“将变量b改成long型”,原书作者并没有说只改一处。就算只改定义,打印输
出部分会在编译时会报类型不匹配warning错误,敏感的程序员当然也要相应修
改。作为老师当然应该能够给学生讲清楚。
只改b的定义,打印输出部分不改(或者随便改成什么乱七八糟的格式例如"%qwqerer"),根本不会在编译时报错。
所有跟贴:
顺便说一句
-
eng
(121 bytes)
2009-03-15, 23:19:18
(306782)
报告下测试结果
-
eng
(254 bytes)
2009-03-15, 23:06:35
(306778)
关于gcc 4.3的printf看来我孤陋寡闻了
-
Yush
(62 bytes)
2009-03-15, 23:45:58
(306790)
printf is specified in C standard, in ch. 7 library. (无内容)
-
steven
(0 bytes)
2009-03-16, 02:48:15
(306815)
gcc果真有这个warning选项
-
Yush
(220 bytes)
2009-03-15, 23:54:51
(306793)
printf, or printf like functions, are special, since they are va_arg
-
steven
(77 bytes)
2009-03-16, 02:55:23
(306816)
你说的“报错”是什么意思?
-
noboru
(209 bytes)
2009-03-15, 22:17:00
(306769)
就是你理解的意思
-
Yush
(335 bytes)
2009-03-15, 22:48:04
(306774)
那你就错了。
-
noboru
(310 bytes)
2009-03-15, 23:07:53
(306779)
你是什么测试环境和测试结果? (无内容)
-
Yush
(0 bytes)
2009-03-15, 23:47:02
(306791)
给编译器一个显示(或显示更多)warning的机会,
-
noboru
(131 bytes)
2009-03-15, 23:54:02
(306792)
我测了
-
Yush
(156 bytes)
2009-03-16, 00:09:11
(306794)
我测了
-
Yush
(192 bytes)
2009-03-15, 23:43:00
(306789)
你把前面加上b=1就没有这些warning了
-
eng
(41 bytes)
2009-03-16, 00:18:56
(306797)
这个大概也仅限于%p,还得归功于Intel的变态寻址方式 (无内容)
-
eng
(0 bytes)
2009-03-15, 23:13:48
(306780)
非也,非也。
-
noboru
(201 bytes)
2009-03-15, 23:28:40
(306788)
试过了,VC和TC都没有关于%s格式的warning
-
eng
(103 bytes)
2009-03-16, 00:17:07
(306796)
VC和TC没有任何关于printf格式(包括%p和乱七八糟)的warning
-
Yush
(27 bytes)
2009-03-16, 00:33:30
(306800)
see MSDN
-
eng
(151 bytes)
2009-03-16, 02:17:09
(306813)
noboru和你是对的。原来有个/Wp64选项,不包括在/Wall中 (无内容)
-
Yush
(0 bytes)
2009-03-16, 03:17:25
(306818)
我的VC2005上对%p有warning C4313 (无内容)
-
eng
(0 bytes)
2009-03-16, 02:13:37
(306812)
“半吊子”这点我已经指出过了:P (无内容)
-
eng
(0 bytes)
2009-03-15, 20:40:53
(306760)
你我把那个“常量指针”、“指针常量”说两叉了
-
Yush
(907 bytes)
2009-03-15, 23:25:51
(306785)
说混了一点儿
-
Yush
(229 bytes)
2009-03-16, 02:11:43
(306811)
NULL的情况不一样
-
eng
(135 bytes)
2009-03-16, 02:29:52
(306814)
通常都说“null pointer constant”不说“NULL pointer constant”
-
Yush
(1408 bytes)
2009-03-16, 03:16:40
(306817)
我可以针对PC机硬件命名一个video buffer pointer constant
-
Yush
(121 bytes)
2009-03-16, 03:23:37
(306819)
这个和数值常量没区别,不用另起名字了
-
eng
(143 bytes)
2009-03-16, 00:11:49
(306795)
跟和数值常量当然有区别,
-
Yush
(405 bytes)
2009-03-16, 00:22:21
(306798)
数组名不是指针常量
-
EINTR
(96 bytes)
2009-03-16, 13:35:47
(306893)
你这种定义“常数”的方法也倒新鲜:)
-
eng
(40 bytes)
2009-03-16, 00:30:51
(306799)
好像属于民科,连K&R都没这么办
-
Yush
(112 bytes)
2009-03-16, 00:41:17
(306801)
加跟贴
笔名:
密码:
注册笔名请按这里
标题:
内容: (
BBCode使用说明
)