设为首页收藏本站

 找回密码
 注册
查看: 5148|回复: 13
打印 上一主题 下一主题

求助,奇怪的最终目标文件编译错误 [复制链接]

Rank: 5Rank: 5

精华
0
UID
4613
积分
953
帖子
162
主题
37
阅读权限
60
注册时间
2009-6-10
最后登录
2019-3-30
跳转到指定楼层
1#
发表于 2010-3-21 21:30:39 |只看该作者 |倒序浏览
if (!BuyToCover(1, Q_AskPrice + TradeOffset, false))
{
    Msg = "在信号价位[" + Text(LongEntry) + "]以价格[" + Text(Q_AskPrice) + "]偏移[" + Text(TradeOffset) + "]点,买入平仓[" + Text(ShortPosition) + "]手委托失败!";
    SendAAA(0, Msg, 1, 3);
    Loglog(LogFileNo, Msg, 531);
}
Else
{
    Msg = "在信号价位[" + Text(LongEntry) + "]以价格[" + Text(Q_AskPrice) + "]偏移[" + Text(TradeOffset) + "]点,买入平仓[" + Text(ShortPosition) + "]手委托成功! TodayTrades:[" + Text(TodayTrades) + "]";
    SendAAA(0, Msg, 1, 3);
    Loglog(LogFileNo, Msg, 535);
}

碰到最终目标文件编译错误了,可是我发现个非常奇怪的问题,我把if{..}中的前两句给注释掉就能编译过去,但如果我把else{..}中的前两句给注释掉也能编译过去(if{..}中的代码取消注释),这到底是怎么回事呢,麻烦管理员给看看有没有什么问题吧

多谢啦

Rank: 5Rank: 5

精华
0
UID
4613
积分
953
帖子
162
主题
37
阅读权限
60
注册时间
2009-6-10
最后登录
2019-3-30
2#
发表于 2010-3-21 21:41:33 |只看该作者
继续更新我的新发现:
如果把if{...}与else{...}中的两句Msg = ...都注释掉,也能编译过去,只注释一条还是报“最终目标文件编译错误”

是不是我的程序的大小超过限制了?貌似不像啊,因为我注释其他的语句还是不管用

PS.管理员能否告知下程序转换为C++的中间程序生成在哪了?报“最终目标文件编译错误”是C++的中间程序编译不成功吗

使用道具 举报

Rank: 10Rank: 10Rank: 10

精华
2
UID
4130
积分
20901
帖子
6519
主题
17
阅读权限
200
注册时间
2009-4-15
最后登录
2019-4-12
3#
发表于 2010-3-22 09:49:51 |只看该作者
看看是否使用了C++关键词?
重启计算机一般可以解决

使用道具 举报

Rank: 5Rank: 5

精华
0
UID
4613
积分
953
帖子
162
主题
37
阅读权限
60
注册时间
2009-6-10
最后登录
2019-3-30
4#
发表于 2010-3-22 09:53:33 |只看该作者
没有使用关键词,重启无法解决

我把if{..}中的前两句给注释掉就能编译过去,但如果我把else{..}中的前两句给注释掉也能编译过去(if{..}中的代码取消注释)
如果把if{...}与else{...}中的两句Msg = ...都注释掉,也能编译过去,只注释一条还是报“最终目标文件编译错误”

这个好像和关键字没关系吧

使用道具 举报

Rank: 10Rank: 10Rank: 10

精华
2
UID
4130
积分
20901
帖子
6519
主题
17
阅读权限
200
注册时间
2009-4-15
最后登录
2019-4-12
5#
发表于 2010-3-22 10:04:16 |只看该作者
SendAAA(0, Msg, 1, 3);
    Loglog(LogFileNo, Msg, 535);
可以编译通过?

使用道具 举报

Rank: 5Rank: 5

精华
0
UID
4613
积分
953
帖子
162
主题
37
阅读权限
60
注册时间
2009-6-10
最后登录
2019-3-30
6#
发表于 2010-3-22 10:18:04 |只看该作者
可以,这两个是我的用户函数。

看这个:
如果把if{...}与else{...}中的两句Msg = ...都注释掉,也能编译过去,只注释一条还是报“最终目标文件编译错误”

说明编译不通过主要在Msg =...语句上,可是我没出有什么问题,原先Msg=右边的语句是直接写在Loglog中的,后来因为加了个函数调用,就把它先赋值给Msg变量了,然后就出这个问题了

不过奇怪的是如果分别把if与else中的Msg=...与SendAAA语句注释掉,也能编译过去,又好像不是Msg=...语句有错误,所以我才怀疑会不会是代码太长的缘故?

管理员觉得呢

使用道具 举报

Rank: 10Rank: 10Rank: 10

精华
2
UID
4130
积分
20901
帖子
6519
主题
17
阅读权限
200
注册时间
2009-4-15
最后登录
2019-4-12
7#
发表于 2010-3-22 11:12:20 |只看该作者
单看msg这句没有错
代码如果有300-400行,就有可能会编译不过

使用道具 举报

Rank: 5Rank: 5

精华
0
UID
4613
积分
953
帖子
162
主题
37
阅读权限
60
注册时间
2009-6-10
最后登录
2019-3-30
8#
发表于 2010-3-22 11:27:43 |只看该作者
还真有这个限制?

按理说不应该啊,难道是行数一多,从TB代码转换为C++代码的环节就会不正确?

可是我把其他地方(还有买入,卖出平仓,卖出)的Msg=..语句和SendAAA语句给注释掉却还是报错,又有点不像是行数限制的原因

有解决的办法吗

使用道具 举报

Rank: 10Rank: 10Rank: 10

精华
2
UID
4130
积分
20901
帖子
6519
主题
17
阅读权限
200
注册时间
2009-4-15
最后登录
2019-4-12
9#
发表于 2010-3-22 12:04:01 |只看该作者
行数是因为windows操作系统的限制,我们本身并没有作出限制
暂时不知道问题出在哪

使用道具 举报

Rank: 5Rank: 5

精华
0
UID
4613
积分
953
帖子
162
主题
37
阅读权限
60
注册时间
2009-6-10
最后登录
2019-3-30
10#
发表于 2010-3-22 12:20:14 |只看该作者
那更不可能了,windows怎么可能限制只有区区几百行呢,几万行的代码都不会限制的

使用道具 举报

您需要登录后才可以回帖 登录 | 注册

bottom

静态版|手机版|联系我们|交易开拓者 ( 粤ICP备07044698   

GMT+8, 2024-5-18 01:07

Powered by Discuz! X2 LicensedChrome插件扩展

© 2011-2012 交易开拓者 Inc.

回顶部