C语言里面不使用函数原型潜在的风险。
2011-09-01 21:21
232 查看
C语言里面不使用函数原型潜在的风险。
1.编译时参数类型不能被检查,这种情况发生在没有函数声明或者将函数声明为return_type func();时被编译器理解为参数个数不确定
2.不使用函数原型时,参数传递时有类型提升,char->int, float->double ..如果函数定义时是用的ANSI形式,就会隐藏错误
参见《C专家编程》上提到的:
ANSI函数声明(原型)与K&R函数定义,如果使用一个较窄的类型时就会失败,函数传递时是实际的较窄类型,而函数体内期望得到的是提升后的类型
K&R函数声明与ANSI函数定义,如果使用一个较窄的类型时就会失败,函数传递时是提升后类型,而函数体内期望得到实际的较窄的类型
1.编译时参数类型不能被检查,这种情况发生在没有函数声明或者将函数声明为return_type func();时被编译器理解为参数个数不确定
2.不使用函数原型时,参数传递时有类型提升,char->int, float->double ..如果函数定义时是用的ANSI形式,就会隐藏错误
参见《C专家编程》上提到的:
ANSI函数声明(原型)与K&R函数定义,如果使用一个较窄的类型时就会失败,函数传递时是实际的较窄类型,而函数体内期望得到的是提升后的类型
K&R函数声明与ANSI函数定义,如果使用一个较窄的类型时就会失败,函数传递时是提升后类型,而函数体内期望得到实际的较窄的类型
相关文章推荐
- C语言中getch()函数的使用
- 关于C语言中getopt()函数的使用方法
- C语言:编写一个函数实现n^k,使用递归实现
- C语言可变参数函数的使用及相关函数介绍
- [转] 关于C语言中getopt()函数的使用方法
- 解决如何在Update函数里面使用Instantiate()
- C语言数据结构中定位函数Index的使用方法
- C语言sscanf函数使用总结
- C语言的常用库函数使用方法分析及用途(12)
- c语言编程实例(使用函数)
- C语言中getopt()函数的使用方法
- C语言中,函数不声明也能使用,但会出现warning: implicit declaration of function
- c语言:sizeof的使用,其不是函数,是一个操作符关键字,定义一个数组arr,输出arr和&arr的区别
- C语言中strtok使用方法与原理,以及自实现函数功能
- 详解C语言中scanf函数使用的一些注意点
- 详解C语言中strcpy()函数与strncpy()函数的使用
- C语言中strspn()函数和strcspn()函数的对比使用
- 浅谈Linux环境下并发编程中C语言fork()函数的使用
- C语言 execve()函数使用方法