终于有了间茅草棚

——我走时,会否有随风飘散的痕迹?

外面的风好大,雨也淅淅沥沥的。

世间种种的诱惑不惊不扰我清梦,山高路远不绝我追踪你绝美的笑容,登高一呼时才懂始终在为你心痛,俯首对花影摇动都是东风在捉弄

世间种种的迷惑都是因你而猜错,水光月光又交融描述这朗朗的夜空,生死到头的相从似狂花落叶般从容,当一切泯灭如梦就在远山被绝
随笔 - 39, 文章 - 2, 评论 - 256, 引用 - 3

导航

<2008年8月>
272829303112
3456789
10111213141516
17181920212223
24252627282930
31123456

留言簿(11)

随笔档案

文章档案

收藏夹

其它的我

友情连接

网页连接

搜索

最新评论

  • 1. re: void *几用
  • 方法都不错
  • --员工生日礼物
  • 2. re: void *几用
  • to oshj:
    最近才悟道这个用法,没想到你都用了很多了。

    to brent:
    不是为了玩才玩,这里每种用法在特定的情况下,都有他相应的好处。不过,我是做为自己记录的,指不定什么时候就忘记了,还可以这么用。
    1. 可以使得头文件简单,而且出于实现保密的需要,还是很有用处的。
    2. 很多时候对象本身应该简洁,但往往应对不同的需要,通常需要数据对应。举个例子,比如玩家在哪个房间,在哪个房间最好不要直接记在玩家身上,用数据注入的方式,能够很快的获得该信息。
    3. 因为是做为库暴露头文件的,使用者并不关心void *的实际意义,而且能够加快编译速度。真正要关心时,就Graphics.h这个头文件是不够的,通常会需要了解整底层个实现,才能较好的扩充。
  • --清风雨
  • 3. re: void *几用
  • 还在玩C++语言,你这玩法, 又不是用在导弹导航上...
    别人看不懂的代码,都不是好代码,分数为0

    int sub(any) { any; return TRUE;}
    (void)sub(any);

  • --brent
  • 4. re: void *几用
  • 个人用3 的情况比较多
  • --oshj
  • 5. re: 简要记录sizeof和内存对齐
  • 很清楚,受教了
  • --rdeam
  • 6. re: 局部变量
  • 我不用ATL,一般都是用标准c++支持的和平台API。
    crt里的wcs和mbs转换的函数,ms的实现是不完整的,在它的实现代码里有一段说明;而且还要设置local,比较烦琐。
  • --清风雨
  • 7. re: 简单字符串转换
  • win下,atl中有CT2CA, CW2CA等一系列转换类。
    crt中有wcstombs和mbstowcs
  • --局部变量
  • 8. re: 一个奇怪但可能有用的缓存
  • vc资料站:http://www.vcmsdn.com/     对学习很有帮助的,可以上去

    看看,或加群46138350,里面有高手可以请教的。
  • --maggie
  • 9. #progma整理
  • #pragma整理
  • --hi_wyl
  • 10. re: hpho
  • 缓冲在一等程度上是临时性的,而且实际上如果保持std::vector的iterator下次使用,也会有问题。

    所以,这个问题也就是使用时不允许这样用。
  • --清风雨
  • 11. re: 一个奇怪但可能有用的缓存
  • 如果有指针引用着arrange()所调整的那块内存,那就乱了.
  • --hpho
  • 12. re: 一个奇怪但可能有用的缓存
  • 用std::string不就行了?
  • --金庆
  • 13. re: ZiDing
  • 鉴于你的建议,前段时间我看了下boost的内存对象池,没有过于深入,
    判断下来属于做法类似,性能应该相当,甚至可能我这个略好一点。

    因为编写测试是一件相当麻烦,而且要求也很高的事,而要全面又很难。

    boost的代码我看起来比较难读,维护、调试起来对我来说是一个大麻烦。所以,我一般不选择boost。
  • --清风雨
  • 14. re: 简单内存对象池
  • 和boost的对比过没有?
  • --ZiDing
  • 15. re: 我是一个中国人,但是我却很羞愧
  • 你既然羞于做中国人,那你就没资格在这说这些看似大义凛然的话.那只能更证明你的虚伪,你在这已经把你的同胞鄙视的一文不值了,那还说这些有什么用?你才是一个真正的崇洋媚外的叛徒,你只不过找了一个冠冕堂皇的理由去媚外而已,你比那些直接媚外的人更加无耻,而且卑鄙!你这是在变相的去煽动国人去舔日本人的屁股!既然你的同胞这么不值钱,日本人都那么好,那你干脆改了国籍算了,那你就能更加正当的去爱国了,岂非一举两得?
  • --我是中国人,所以我骄傲

阅读排行榜

评论排行榜

我犯的一个很愚蠢的错误,当时还以为没错

    其实,是一个很简单的错误。只要稍微用心点,就不会发生,可是我就偏偏发生了,而且好像这是第二次。
    我是需要x和x_last不同时,doSomeThing(),直到x和x_last一致。因为觉得if看起来不舒服,结果写了以下愚蠢的代码:
    while( x < x_last-- ) doSomeThing();
    while( x > x_last++ ) doSomeThing();
初看,自己真的没觉得有什么错,可惜的就是x_last--会执行到x == x_last了,还x_last--一次,从而,我那可怜的x > x_last ++也被判断了,还doSomeThing()了一次。
    还是不喜欢if(顺便,个人不觉得这里有什么实际的效率损失),改为了以下形式:
    while( x < x_last )
    {
        x_last--;
        doSomeThing();
    }
    while( x > x_last )
    {
        x_last++;
        doSomeThing();
    }
    下次,如果有人打算把类似第二个while的方法,简写为第一个while时,要小心了哦(俺就是想把第二个简写为第一个,而且觉得加上if else 难看,所以,犯了这个错误两次,第一次找出来了,结果等了几个月后,居然又误入歧途。呵呵,俺下次就会高度重视了!)。

posted on 2005-07-31 09:50 终于有了间茅草棚 阅读(4026) 评论(14)  编辑 收藏

评论

# re: 我犯的一个很愚蠢的错误,当时还以为没错

LZ的代码也写的太晦涩了(又不是搞源码加密),BS一下,嘿嘿。

#include <stdio.h>

int x=0, x_last=5;

void doSomeThing()
{
    printf("doSomeThing: x: %d  x_last: %d\n", x, x_last);
}

void printStatus()
{
    printf("    printStatus: x: %d  x_last: %d\n", x, x_last);
}

int main(int argc, char *argv[])
{
/*  
    ///// your code
	while(printStatus(),x<x_last--) 
        doSomeThing();
     printf("main: x: %d  x_last: %d\n", x, x_last);
	while( x > x_last++ ) 
        doSomeThing();
*/
    ///// my code
    int flag = x > x_last ? 1 : -1;
    /*
    while( printStatus(), x!=x_last ) 
        x_last+=flag, doSomeThing();
    */
    while( x!=x_last ) 
        x_last+=flag, doSomeThing();
	return 0;
}
2005-07-31 10:23 | 乾坤一笑

# re: 我犯的一个很愚蠢的错误,当时还以为没错

自偶点评一下:"需要x和x_last不同时,doSomeThing(),直到x和x_last一致" 所以就要判断“x!=x_last”或者“x<x_last || x>x_last”,把这种原子判断条件分成两部分来写,一方面会产生隐讳的逻辑错误,另一方面则对别人读代码造成极为严重的障碍。(汗!最近偶好像特自恋,老搞自偶崇拜,BS自己一下!)
2005-07-31 10:26 | 乾坤一笑

# re: 乾坤一笑

我以前应该也看到过类似的做法。

你这种方式好,确实应该先设立一个方向flag,然后同意逻辑处理。

我那个逻辑上本身就不独立,不过,贴出来,主要是引以为诫,告诫自己:不要为了所谓的书写优美或循环优化等而引入了错误,就这里,就是要特别注意我喜欢简写的++/--的问题了。
2005-07-31 13:02 | 清风雨

# re: 乾坤一笑

还有一个问题就是,个人从某个时候起,习惯了范围匹配,而不是精确匹配。
比如,如果精确匹配,遇到浮点时,就要小心了哦。

另外,范围的好处就是,万一软件发生故障,根据范围还能处理。也就相当于添加了一定的自我修复能力或加强了健壮性。
2005-07-31 13:07 | 清风雨

# re:大家

++,--的东西研究得这么细致 
又想起阿荣的话:细小之处往往最能体现实力!^_^
2005-07-31 16:41 | gaoqing000

# to 清风雨 :

还有一个问题就是,个人从某个时候起,习惯了范围匹配,而不是精确匹配。
比如,如果精确匹配,遇到浮点时,就要小心了哦。
-----
杀鸡用鸡刀,杀牛用牛刀。这个理由找的可真不高明!:)
2005-07-31 17:57 | 乾坤一笑

# 读下这篇文章,你就不会犯错误了

http://www.vckbase.com/document/viewdoc/?id=1372
2005-07-31 20:21 | 老梆菜

# re: 乾坤一笑

先:呵呵,一笑以为我是在为自己找借口。哈哈!

然:“直到x和x_last一致”是后来我从while总结来的,开始的实际还是x < x_last时要如何,x > x_last时要如何。个人很多时候觉得一句话很可能影响程序当时的写法。(如果,这个也觉得是借口,哈哈,那就借口好了。:})当然,如果是另一种同样问题的更好方法已经注意,那么一般情况也是会大脑优选的,也不会出现while1和while2。

感觉有点不实在说技术了。:}不过,还好,里面有两句有意义的话。
2005-07-31 20:56 | 清风雨

# re: 老梆菜

杨老师的文章粗略阅过。不过,对我可能实质帮助不大:},所以,也没有细看,只是看了个大概。
但,不论怎么说吧,还是很高兴能看到杨老师的文章连接于此。
2005-07-31 21:01 | 清风雨

# 就精确匹配

又看了一下。

个人习惯不好,在一个问题未完时,又出另题。

不过,看到的朋友,如果有可能,可以考虑范围匹配代替精确匹配的哦,不仅仅是浮点运算。他会给你带来好多好处的,一般来说好处大于害处。
当然,凡事都要因具体问题而议了,如果你觉得有更多理由,不屑于如此,那也不必如此。
2005-07-31 21:08 | 清风雨

# re: 我犯的一个很愚蠢的错误,当时还以为没错

"范围匹配代替精确匹配"说的可是如float型和0.0比较不能直接比的问题?比如f!=0.0要写成 f<-0.0001 && f >0.0001的问题?
偶就知道你要这样讲,所以偶写了“ 所以就要判断“x!=x_last”或者“x<x_last || x>x_last”,” 而不是仅仅写了只能x!=x_last。 嘿嘿嘿嘿。
2005-07-31 21:47 | 乾坤一笑

# re: 乾坤一笑

不是的,我说范围匹配不是就你的说法说的。
是说我当时放这个错误的一个潜在原因和下意识。后来,觉得范围匹配有很多好处,相对精确匹配而言,所以,顺便强盗了一下。

范围匹配也不限于浮点,那个其实也是个“精度匹配”的问题。范围匹配的一个基本好处,是可以预防错误,防止调试时遗漏的意外,保护软件。

呵呵,你的问题,我其实本来写的也是int,还一直没注意你把我x看成float的,如果float了,呵呵,还真的不能 x != x_last(除非它觉得玩起来很happy);还有,如果float,我也不能++/--的,呵呵,没必要那么特意的。

俺向来认为凡事在神而不在形,虽然,俺喜欢比较艺术一点的文字(我觉得这个是文字的神的一种表现,不扯远了)。
2005-07-31 22:13 | 清风雨

# 我的上一贴

shit,别字真多。
是 强调 不是 强盗。
2005-07-31 22:15 | 清风雨

# re: 我犯的一个很愚蠢的错误,当时还以为没错

我还是倾向于先判断两者的大小,然后使用while循环比对
2005-07-31 23:14 | hengai
标题  
姓名  
主页
验证码 *
内容   
  登录  使用高级评论  Top
[使用Ctrl+Enter键可以直接提交]