1.你需要知道什么是ANSI/ISO C标准
ANSI C是由(ANSI)及(ISO)推出的关于C语言的标准。ANSI C 主要标准化了现存的实现, 同时增加了一些来自 C++ 的内容 (主要是函数原型) 并支持多国字符集 (包括备受争议的三字符序列)。 ANSI C 标准同时规定了 C 运行期库例程的标准。
2.ANSI 编译器在遇到代码警告类型不匹配的情况
extern int func(float); int func(x) float x;
不匹配的原因:
旧的 C 编译器 (包括未使用原型和变长参数列表的 ANSI C) 会 ``放宽" 传入 函数的某些参数。 浮点数被升为双精度浮点数, 字符和段整型被升为整型。 对于旧式的函数定义, 参数值会在被调函数的内部自动转换为对应的较窄 的类型。
怎么写可以避免警告呢?
使用新型的语法一致性:
int func(float x) { ... }
把新型原型声明改成跟旧式定义一致。
extern int func(double);
3.关键字const
const 关键字含义是 ``只读的"; 用它限定的对象是运行时 (同常) 不能被赋值的对象。因此用 const 限定的对象的值并 不完全是一个真正的常量。
为什么要用const
“它限定一个变量不允许被改变,产生静态作用。使用const在一定程度上可以提高程序的安全性和可靠性。另外,在观看别人代码的时候,清晰理解const所起的作用,对理解对方的程序也有一定帮助。”
——引自百度百科
const的主要作用:
- 不可变性。
- 便于进行类型检查,方便编译器处理,消除隐患。
- 避免意义模糊的数字出现,同样可以很方便地进行参数的调整和修改。 同宏定义一样,可以做到不变则已,一变都变!
- 保护被修饰的东西,防止意外的修改,增强程序的健壮性。
- 节省空间,避免不必要的内存分配。
未完待续