Chinaunix首页 | 论坛 | 博客
  • 博客访问: 3922271
  • 博文数量: 534
  • 博客积分: 10470
  • 博客等级: 上将
  • 技术积分: 4800
  • 用 户 组: 普通用户
  • 注册时间: 2006-05-26 14:08
文章分类

全部博文(534)

文章存档

2024年(1)

2021年(1)

2019年(1)

2017年(1)

2016年(2)

2013年(2)

2012年(10)

2011年(43)

2010年(10)

2009年(17)

2008年(121)

2007年(252)

2006年(73)

分类: C/C++

2008-07-26 18:31:39

上个星期写了些代码(Linux C代码,vi, gcc),不过很多是在别人的代码基础上在添加的自己函数的(功能增强的需要),内容很杂,一个文件4000~6000行,有些结构体内部成员都到了30 ~ 60个左右了,看的人真是很头痛,但也没办法,自己不可能大量的去修改别人的代码。于是我就把自己的代码用比较明显的注释同上面的部分隔离开来(本来想自己重新写个文件的,但要用到该文件中的局部变量),因为我写东西总是希望自己所写的东西可以在自己的控制范围内,但现在没办法,好象是不怎么好控制了。

晚上回来走到路上突然想到个问题,如果我的结构体中的一些成员自己不小心在什么地方修改了怎么办?如:Oracle表的列数,但自己得到来具体的列数后就不再修改了,但如果修改了呢?真的不好控制啊,代码太多了,太杂了。

很自然的想到const的使用了,但自己原来只在函数入口上使用过,其它地方对const真是不感兴趣,因为const就算我使用了一样可以来个强制转换让const不起作用的。在函数入口上使用const是为了告诉调用函数的人我的这个参数在调用完这个函数,该参数的值是不会发生改变的。

想来想去没找到什么好办法,还是用const吧,如:

typedef struct
{
...
const int    ncol;
} ctab_struct;

void func(void)
{
  int    n;
  ctab_struct ctb;

  ...
  ctb.ncol = (const int)n;

  ...
}

只有这么使用了,当自己要给const值设置新的值的时候就来个const强制转换了,在别的地方自己尽量不要使用强制转换了,真的没有什么好的办法,只有靠这个简单的写代码规则来约束自己了,因为这样我们可以利用编译器来帮助一下自己了。

const允许你指定一种语义上的约束:一个特定的对象不应该被修改。而编译器将执行这一约束。它允许你通知编译器和其他程序员,某个值应该保持不变。如果确实如此,你就应该明确地表示出来,因为这样一来,你就可以谋取编译器的帮助,确定这个值不会被改变。 
阅读(2378) | 评论(0) | 转发(0) |
0

上一篇:IT的小说

下一篇:文档管理&版本管理

给主人留下些什么吧!~~