code::blocks在vs2008下编译的一个问题

 

快乐虾

http://blog.csdn.net/lights_joy/

lights@hb165.com

  

本文适用于

codeblocks-8.02

vs2008

  

欢迎转载,但请保留作者信息

 

 

vs2008下编译code::blocks时有一个问题。

由于c::b在编译完成一个项目后会生成一个与项目同名的.depend文件,此文件写明了工程中各文件的依赖关系,就像这样的:

# depslib dependency file v1.0

1183729388 source:f:/temp/cb/cbtest/main.c

       <stdio.h>

       <stdlib.h>

c::b的代码中,上述文件的输出是这样的:

void cache_write(const char *path)

{

     int vmajor, vminor;

     FILE *f;

     HDR *h;

 

     if (check_cache_file(path, &vmajor, &vminor) == CACHE_BAD)

         return;

 

     if (!(f = fopen(path, "w")))

         return;

 

     fprintf(f, magic, DEPS_MAJOR, DEPS_MINOR);

     fputc('/n', f);

 

     for (h = hdrlist; h; h = h->next)

     {

         LIST *l;

         fprintf(f, "%ld %s/n", h->time, h->file);

         for (l = h->includes; l; l = list_next (l))

         {

              fprintf(f, "/t%s/n", l->string);

         }

         fprintf(f, "/n");

     }

 

     fclose(f);

}

注意第二行代码的输出:

         fprintf(f, "%ld %s/n", h->time, h->file);

它使用了ld修饰符来输出h->time的内容,而h->time是一个定义为time_t的变量,在vs2008time_t__int64类型的!因此这一行将无法取得正确的输出结果。

c::b读取.depend文件时,它使用这样的语句:

         sscanf(buf, "%ld %n", &timeval, &n);

这样导致timevaln都无法取得正确的值!后继的代码自然也无法运行!

在这里只能改为I64修饰符。

 

 

1       参考资料

codeblocksplugin的实现(2008-9-9)

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

嵌云阁主

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值