查看完整版本: [-- 垂直同步?还是什么设备之类的问题…… --]

-> 同人游戏创作/Doujin Games Workshop -> 垂直同步?还是什么设备之类的问题…… [打印本页] 登录 -> 注册 -> 回复主题 -> 发表主题

h5nc 2010-03-05 11:25

垂直同步?还是什么设备之类的问题……

终于搞定2010了……设定VC++目录累死了……
由于是beta2所以目前还米有VAX……编译器不期待了……

目前问题是这样,仅在调试中会出现,运行后忽然某时刻开始卡,卡到30FPS整,正好是一半,但是切换焦距后回来就正常了,这是什么问题……
貌似仅在这个A卡5770中出现
顺便开关垂直同步的程序方法是啥……

然后找了一天的问题其实在于
fscanf(XXXXX, "%d%d%d", &(tint[++i]), &(tint[++i]), &(tint[++i]))的操作顺序不同&……Intel编译器会体贴般从前到后进行参数解释,VC会从后到前传参……导致出来的tint存储的东西顺序不同……

另外一个问题,debug下我清清楚楚写到
#ifdef _DEBUG
 #pragma comment(lib, "hgehelp_d.lib")
#else
 #pragma comment(lib, "hgehelp.lib")
#endif // _DEBUG

为什么项目link的comment里面写的却是 "E:\hge\src\helpers\.\../../lib/vc\hgehelp.lib"?
除了写在代码中或者写在link选项的input中之外,还有什么地方控制输入什么库呢?

sjmind 2010-03-07 12:42

fscanf(XXXXX, "%d%d%d", &(tint[++i]), &(tint[++i]), &(tint[++i]))的操作顺序不同&……Intel编译器会体贴般从前到后进行参数解释,VC会从后到前传参……导致出来的tint存储的东西顺序不同……


这个可能是由于
1)调用规范导致的问题,可以尝试显式声明调用规范为__stdcall看看(话说,VS的库的调用规范是什么我也不记得了,回去再看看)
2)__VA_ARG__定义不一致,这个就比较尴尬了,可以尝试下做个宏
另外一个问题,debug下我清清楚楚写到
#ifdef _DEBUG
#pragma comment(lib, "hgehelp_d.lib")
#else
#pragma comment(lib, "hgehelp.lib")
#endif // _DEBUG

为什么项目link的comment里面写的却是 "E:\hge\src\helpers\.\../../lib/vc\hgehelp.lib"?
除了写在代码中或者写在link选项的input中之外,还有什么地方控制输入什么库呢?


= = 还有几个库文件的path设定,还有工程目录的设定有时侯也会有影响,我VS2008下貌似也就改了没几个地方没有出现这问题

ryuka 2010-03-07 14:13
fscanf(XXXXX, "%d%d%d", &(tint[++i]), &(tint[++i]), &(tint[++i]))

这个就不用这样写了把
fscanf(XXXXX, "%d%d%d", &(tint), &(tint[i+1]), &(tint[i + 2]))
i += 3;
不是更清楚嘛..

除了写在代码中或者写在link选项的input中之外,还有什么地方控制输入什么库呢?

还有个方法.直接把lib文件包含到工程里面去..不过好像和你这里的问题没关系

littlewater 2010-03-07 17:04
fscanf(XXXXX, "%d%d%d", &(tint[++i]), &(tint[++i]), &(tint[++i]))
老实说这种是最忌讳的写法,千万勿用- -


代码写和IDE写应该是二回事情(不知道2005PRO以后的是不是会自动识别……一直用EXPRESS完全足够……)
输入库还有一种直接用命令行^-^,本质上也没差别……

鸡蛋灌饼 2010-03-07 18:33
1)此特性依赖实现,不要写这种代码,难读不说还会给自己找麻烦
2)关于DEBUG定义什么宏,唯一的到广泛使用的是非Debug情况下必然会定义NDEBUG宏,_DEBUG这个东西换个编译器就未必能用了。
另外,在代码中用#pragma这种非标准的行为注释出依赖库也不是good practice

h5nc 2010-03-08 01:17
引用第2楼ryuka于2010-03-07 14:13发表的 :
fscanf(XXXXX, "%d%d%d", &(tint[++i]), &(tint[++i]), &(tint[++i]))
这个就不用这样写了把
fscanf(XXXXX, "%d%d%d", &(tint), &(tint[i+1]), &(tint[i + 2]))
i += 3;
.......

这一段是读取表格的快速形式……

定义_LOADTINT为(tint[++i]),_SAVETINT为(&_LOADTINT)
随时在中间增加列都可以在其中增加参数不改变更多代码……之类的想法……

我觉得编译出来的话都是一样的,只要编译过程正确就可以吧。。我只用Intel和VS的,目前定义了一个识别编译器进行逆序处理的宏暂时解决掉了……

偶个人滴感觉索在程序中出现上下相关相对应的直接数字降低了可读性……

貌似其实跑题了……


查看完整版本: [-- 垂直同步?还是什么设备之类的问题…… --] [-- top --]


Powered by phpwind v8.7 Code ©2003-2011 phpwind
Time 0.020151 second(s),query:2 Gzip enabled