美文网首页
12. 常量

12. 常量

作者: bigwhite | 来源:发表于2013-11-26 15:18 被阅读0次

    数值型常量不应该被硬编码到源文件中。应该使用C预处理器的#define特性为常量赋予一个有意义的名字。符号化的常量可以让代码具有更好的可读性。在一处地方统一定义这些值也便于进行大型程序的管理,这样常量值可以在一个地方进行统一修改,只需修改define的值即可。枚举数据类型更适合声明一组具有离散值的变量,并且编译器还可以对其进行额外的类型检查。至少,任何硬编码的值常量必须具有一段注释,以说明该值的来历。

    常量的定义应该与其使用是一致的;例如使用540.0作为一个浮点数,而不是使用540外加一个隐式的float类型转换。有些时候常量0和1被直接使用而没有用define进行定义。例如,一个for循环语句中用于标识数组下标的常量,

    for (i = 0; i < ARYBOUND; i++)
    

    上面代码是合理的,但下面代码

    door_t *front_door = opens(door[i], 7);
    if (front_door == 0)
        error("can't open %s\\\\n", door[i]);
    

    是不合理的。在最后的那个例子中,front_door是一个指针。当一个值是指针的时候,它应该与NULL比较而不是与0比较。NULL被定义在标准I/O库头文件stdio.h中,在一些新系统中它在stdlib.h中定义。即使像1或0这样的简单值,我们最好也用define定义成TRUE和FALSE定义后再使用(有些时候,使用YES和NO可读性更好)。

    简单字符常量应该被定义成字面值,不应该使用数字。不鼓励使用非可见文本字符,因为它们是不可移植的。如果非可见文本字符十分必要,尤其是当它们在字符串中使用时,它们应该定义成三个八进制数字的转义字符(例如: '\007‘)而非一个字符。即使这样,这种用法也应该考虑其机器相关性,并按这里的方法处理。

    相关文章

      网友评论

          本文标题:12. 常量

          本文链接:https://www.haomeiwen.com/subject/toiqtttx.html