code::blocks在vs2008下编译的一个问题
2009-05-03 21:05
477 查看
快乐虾 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的变量,在vs2008下time_t是__int64类型的!因此这一行将无法取得正确的输出结果。
当c::b读取.depend文件时,它使用这样的语句:
sscanf(buf, "%ld %n", &timeval, &n);
这样导致timeval和n都无法取得正确的值!后继的代码自然也无法运行!
在这里只能改为I64修饰符。
本文适用于
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的变量,在vs2008下time_t是__int64类型的!因此这一行将无法取得正确的输出结果。
当c::b读取.depend文件时,它使用这样的语句:
sscanf(buf, "%ld %n", &timeval, &n);
这样导致timeval和n都无法取得正确的值!后继的代码自然也无法运行!
在这里只能改为I64修饰符。
1 参考资料
codeblocks中plugin的实现(2008-9-9)相关文章推荐
- 一个VC6的工程转换为VS2008的工程后,编译找不到而且不能升级vc90.pdb文件的问题解决方法 2010-9-28 14:00
- Ubuntu安装CodeBlocks相关问题(不能编译或者编译通过但不能生成可执行文件)
- codeblocks编译pthread问题
- ubuntu下code::blocks编译运行一个简单的gtk+2.0项目
- x64环境下CodeBlocks编译动态链接库的问题
- 关于CodeBlocks安装后无法编译问题
- codeblocks工程下关于结构体的一个问题
- 关于code::blocks的编译速度问题
- 我把一个VC6的工程转换为VS2008的工程后,编译总是出现找不到而且不能升级vc90.pdb文件的问题,error C2471--解决办法 2010-9-16 15:01
- Fedora9下codeblocks安装无法编译的问题
- ubuntu下使用code::blocks编译运行一个简单的gtk+2.0项目
- 在编译的时候出现这个问题 LINK : 没有找到 C:\Users\...\transposeMatrix.exe 或上一个增量链接没有生成它;正在执行完全链接 我用的是VS2008
- x64环境下CodeBlocks编译动态链接库的问题
- 一个关于VS2008在其他未安装VS2008的电脑上无法运行编译的程序的问题 收藏
- codeblocks编译出错问题的解答!(编译c++ 或者c程序)
- 一个关于VS2008在其他未安装VS2008的电脑上无法运行编译的程序的问题
- ubuntu 系统中codeblocks 设置问题——解决编译找不到编译器路径,运行时出现permission denied情况
- 一个CodeBlocks注释问题(不能用//单行注释)
- 编译自己的 Code::Blocks ! (三)为 Code::Blocks 编译一个专用 wxWidgets 2.8.12 库
- 我把一个VC6的工程转换为VS2008的工程后,编译总是出现找不到而且不能升级vc90.pdb文件的问题,error C2471--解决办法