注:本课程参考文献《C安全编码标准》
欢迎关注我👆,收藏下次不迷路┗|`O′|┛ 嗷~~
目录
一.不安全代码
二.解决方案
三.练习和答案
一.不安全代码
在下述不兼容的代码示例中,C语言标准程序库的头文件<inttypes.h>
包含了<stdint.h>
,而名称MAX_SIZE
与表示size_t
上限的标准宏名称相同,因此产生了冲突。另外,尽管C语言标准库没有定义名为INTFAST16_LIMIT_MAX
的标识符,但由于它以INT
为前缀,并以_MAX
为后缀,所以它也被视为一个保留的标识符。
二.解决方案
通过避免重新定义保留名称,或者使用保留的前缀及后缀。
三.练习和答案
案例一:
问题描述:
在尝试编译以下C语言代码时,编译器报错指出MAX_SIZE
和INTFAST16_LIMIT_MAX
的命名冲突。代码的目的是打印一个int_fast16_t
类型的值,如果值超过设定的上限则提示值过大。
代码示例:
答案:
编译器报错,因为MAX_SIZE
可能与<inttypes.h>
或<stdint.h>
中定义的宏冲突,同时INTFAST16_LIMIT_MAX
使用了保留的命名模式。
案例二:
问题描述:
修正上述代码,以避免命名冲突,并确保代码可以成功编译和运行。
代码示例:
答案:
代码成功编译和运行,没有命名冲突,可以正确地打印出int_fast16_t
类型的值或者提示值过大。
非常感谢您花时间阅读我的博客,希望这些分享能为您带来启发和帮助。期待您的反馈与交流,让我们共同成长,再次感谢!
👇个人网站👇