DELPHI盒子
!实时搜索: 盒子论坛 | 注册用户 | 修改信息 | 退出
检举帖 | 全文检索 | 关闭广告 | 捐赠
技术论坛
 用户名
 密  码
自动登陆(30天有效)
忘了密码
≡技术区≡
DELPHI技术
lazarus/fpc/Free Pascal
移动应用开发
Web应用开发
数据库专区
报表专区
网络通讯
开源项目
论坛精华贴
≡发布区≡
发布代码
发布控件
文档资料
经典工具
≡事务区≡
网站意见
盒子之家
招聘应聘
信息交换
论坛信息
最新加入: jsuguo
今日帖子: 34
在线用户: 13
导航: 论坛 -> DELPHI技术 斑竹:liumazi,sephil  
作者:
男 bcc2cc (bcc2cc) ▲▲▲▲△ -
普通会员
2018/4/4 15:19:36
标题:
C++builder 10.2.3 又出那种极其低级的bug ! 浏览:4261
加入我的收藏
楼主: 一直用C++Builder做界面部分,很多年了, 这东西不算太好,但是一直满足使用
期间C++基础库出过几次低级BUG, 算了,函数出问题没关系,避开不用就是了. 能忍.

为了c++语法支持上与VC持平, 也为了用上一些能降低繁琐性的新语法,升级到了10
10以来, C++builder一直处于写几行代码都频繁崩溃的状态,问题源自code insight时的编译器内在bug. 算了,我关掉insight,或者直接用VC写代码,  带着情绪忍.

上周升级到10.2.3 IDE总算不会崩溃了, 终于能用来写代码了,当时真高兴.
结果更严重的低级BUG就来了, 触发代码如下:

void __fastcall TForm1::BitBtn1Click(TObject *Sender)
{
  char buf[4096];
}
DEBUG编译触发

真的是神一样的BUG,  这个bug是编译器内部stack地址计算错误, 没法绕开,大于4k局部数据就崩溃.   这个BUG我绕不开,我没法不调试啊


EMB啊EMB, 你们的开发队伍烂的可以了啊, 这样的产品是怎么通过QA的 ?

实在不行,干脆外包给我好吗 ?
----------------------------------------------
-
作者:
男 bcc2cc (bcc2cc) ▲▲▲▲△ -
普通会员
2018/4/4 15:23:56
1楼:
此帖子包含附件:
PNG 图像
大小:23.1K
----------------------------------------------
-
作者:
男 wang_80919 (Flying Wang) ★☆☆☆☆ -
普通会员
2018/4/4 15:29:30
2楼: 不知道我哪里抄错了,没有发生错误。

我相信,外包给楼主, BUG 更多。
我给 EMB 的 DLEPHI 提了几个 BUG。但是我绝对不认为,我能比他们做得好。
----------------------------------------------
(C)(P)Flying Wang
作者:
男 nevergrief (孤独骑士) ★☆☆☆☆ -
盒子活跃会员
2018/4/4 15:54:28
3楼: 做这么多年C++难道不知道函数栈空间最多1M或者2M吗?你这都4M了啊。Debug崩溃是因为没有把你的错误代码优化掉。Release大概是直接优化掉了你的代码,所以没事。

另外就算有bug,去报告一下就是了,干嘛这么大的情绪呢?
----------------------------------------------
只有偏执狂才能生存!
作者:
男 xiaomajia52 (sun小马) ▲▲▲△△ -
普通会员
2018/4/4 15:56:05
3楼: 楼主你确定不是你的代码写bug了?

我新建的工程,放了一个btn,定义了一句话char szbuf[0x1000];

运行,没有问题啊、楼主你这个是自己代码写bug了吧
此帖子包含附件:
PNG 图像
大小:19.0K
----------------------------------------------
-
作者:
男 bcc2cc (bcc2cc) ▲▲▲▲△ -
普通会员
2018/4/4 16:33:54
4楼: to xiaomajia52 :
抱歉,忘记说了, 要切换到clang编译器
代码就我截图那么几行,
这bug能绕,只是需要完整测试一遍确定哪些函数需要处理一下,很耗时
 
to nevergrief:
对于 4096 = 4M ,却喜欢用讥讽类语言的人,我就不和你讨论技术问题了
你说话是真的站着说话不腰疼, 有bug报告一下就是了?  我是要工作的,不是闲暇时候随便玩一下,玩不下去就随手扔一边就行的.
----------------------------------------------
-
作者:
男 xiaomajia52 (sun小马) ▲▲▲△△ -
普通会员
2018/4/4 17:45:14
5楼: 仔细看我的汇编代码,64位的,就是clang
----------------------------------------------
-
作者:
男 xiaomajia52 (sun小马) ▲▲▲△△ -
普通会员
2018/4/4 18:34:51
6楼: 好像是32位debug模式确实有这个问题,真是神奇,我看了一下确实定义4000他都是按照1020这样子分配

不过我的习惯是超过MAX_PATH就用
boost::scoped<char> spbuf(new char[4096]);
这样子来分配了
----------------------------------------------
-
作者:
男 nevergrief (孤独骑士) ★☆☆☆☆ -
盒子活跃会员
2018/4/4 18:39:43
7楼: to bcc2cc
没有亲测一下,是我的错。不过报告一下bug还是应该的,想象一下你的用户不给你报告bug是什么感觉?你既然天天使用它,也就有责任让它变得更好。
----------------------------------------------
只有偏执狂才能生存!
作者:
男 zwjchinazwj (蒲石) ★☆☆☆☆ -
普通会员
2018/4/4 20:18:01
8楼: QC早有报告。
另外,这种BUG已经低级到令人发指了。没什么好说的。
----------------------------------------------
-
作者:
男 bahamut8348 (leonna) ★☆☆☆☆ -
普通会员
2018/4/4 21:17:46
9楼: 静态数组是不建议用太大。
我记得好像vc的某个版本,2013还是2012,也有这个问题。

一般超过1K的数组,还是用堆内存的好。
----------------------------------------------
--
作者:
男 zwjchinazwj (蒲石) ★☆☆☆☆ -
普通会员
2018/4/5 8:22:20
10楼: @bahamut8348 不要误导人。
c++对象超过1k的多得是,c++与delphi不同,经常会在栈上建立对象。
----------------------------------------------
-
作者:
男 bahamut8348 (leonna) ★☆☆☆☆ -
普通会员
2018/4/5 10:53:12
11楼: 呵~
那楼上的开心就好吧。
----------------------------------------------
--
作者:
男 bcc2cc (bcc2cc) ▲▲▲▲△ -
普通会员
2018/4/5 15:11:14
12楼: to bahamut8348:

并非为了和你抬杠,  
从实用角度, stack变量, 可以免去内存分配释放的步骤, 让代码更简洁, 运行效率更高, 在复杂函数中还有利于减少内存泄露的的bug
再说1k实在不大,  windows 32位默认每个线程分配1M的最大可用stack, 无论从任何角度考虑,千分之一的使用量都是微不足道的.
如果运行环境苛刻到需要考虑 1K也分配不出的极端,  那可能问问项目设计为什么错误的选择了 windows + vc 才是最关键.

顺便说一下 VC 6 2005 2008 2013 2015  都没这种bug, 微软的质量还是有基本保障的.
----------------------------------------------
-
作者:
男 zwjchinazwj (蒲石) ★☆☆☆☆ -
普通会员
2018/4/5 16:08:46
13楼: 开心就好?还是虚心一点好

对于32位程序,“静态数组是不建议用太大”这没错
但是你需要搞清楚为什么这么说。
----------------------------------------------
-
作者:
男 mricy (Icy) ▲▲▲▲△ -
普通会员
2018/4/6 0:00:46
14楼: 我给嗯ebm建议了 外包你以后希望没有这“bug”
----------------------------------------------
哦哟喂,看过来: http://zelig.cn
作者:
男 bahamut8348 (leonna) ★☆☆☆☆ -
普通会员
2018/4/6 0:59:53
15楼: 呵~只说不建议,没说不让你用不是?
如果你真只是为了节约那么两句代码的话,自己封装一个类,重载一下运算符的事罢了。
那么至于为什么,我可以说一个解释,你可以硬顶另一个说法。有毛意思么?
所以,我说,你开心就成了。还虚个什么心?

老实说,如果你真只是为了写代码方便的话,写什么c++?去用php、python这些不好么?
----------------------------------------------
--
作者:
男 zwjchinazwj (蒲石) ★☆☆☆☆ -
普通会员
2018/4/6 10:17:12
16楼: 知道Delphi在对象上实现个运算符重载为什么这么难么?
知道为什么直至今天在移动平台上实现了 运算符重载,而windows平台却没有?

都是一个公司出的产品,C++却轻松可以运算符重载,知道为什么吗?

因为c++可以在栈上建立对象,delphi不可以。在运算符重载运算的过程中会生成临时的中间对象,在堆上建立临时的中间对象不好管理生命周期。

在移动平台,由于引入了ARC,临时对象可以通过ARC进行生命周期管理,所以移动平台Delphi容易实现。

换句话说,C++在栈上使用不小内存(对象)是很常见的行为,
你不写char[1024],不代表你的代码里没有在栈上分配大于1K的内存。
这点常识总要建立,再出来喷人行不行。

最莫名其妙的是,如此低级的BUG,到成了使用者的过错,什么心态。
----------------------------------------------
-
作者:
男 hyz_hz (随风) ★☆☆☆☆ -
普通会员
2018/4/6 10:56:56
17楼: 那就外包给你了.
----------------------------------------------
-
作者:
男 vkow (vkow) ★☆☆☆☆ -
普通会员
2018/4/6 13:23:59
18楼: 一脸懵逼的进来,又一脸懵逼的出去。

没看懂发生了啥问题。

难道分配大于4K数组就出问题??
----------------------------------------------
-
作者:
男 bahamut8348 (leonna) ★☆☆☆☆ -
普通会员
2018/4/6 15:45:23
19楼: 呵~
原来一堆的洁癖患者。

首先,我有说这是使用者的过错么?我也并没有说不让咋样,也没说学习各种知识就不好吧?

但是,低级bug出了你能如何?无非就是要么换编译器换语言,要么去提交bug然后等待修复。那么,在等待的过程中你就等着?
那在各种编译器诞生初期各种bug横飞的时候就别用了么?或者就必须往死里怼作者?即便你怼死了作者,然后呢?你获胜了以后,你的项目估计也差不多黄了吧?

对于代码的问题,你只能去专注你自己的部分,除非去做研究或者学习,你去专注框架或者底层代码做什么?你想推了人家的重来?即便是推了重来,你又知道封装的意义是什么吗?有人在做产品做项目的时候把所有问题统统放一起考虑的么?那你用高级语言做什么?
----------------------------------------------
--
作者:
男 zwjchinazwj (蒲石) ★☆☆☆☆ -
普通会员
2018/4/6 16:09:58
20楼: BUG就是BUG,没什么怼不怼,说明事实。这BUG在QC上我早看到了,也没说过什么。

相反,只要有人指出问题,总有人跳出来“护犊子”。到底是个什么心态?
从2009到今天快10年了,还好意思拿“编译器诞生初期各种bug横飞”来说事。

你看到Go有你说的“编译器诞生初期各种bug横飞”?C#也是比Delphi/C++新得多的语言,
也有你说BUG横飞?

对于一些人来说,尤其有一定年纪的人来说,这是吃饭的家伙。它有问题会是大问题。但是,“护犊子”只能使问题更加恶化。

在我看来
第1 这个BUG很低级,绝不该出现,开源的编译器都不会有这么低级的BUG,何况是商业编译器。
第2 楼主有情绪表达,语气过重。但是EMB的产品不靠谱是事实,不是诬陷。
----------------------------------------------
-
作者:
男 bahamut8348 (leonna) ★☆☆☆☆ -
普通会员
2018/4/6 16:48:07
21楼: 这就成护犊子了?这脑回路真神奇。
我只是在描述一个现实问题。

现在就是有这个bug了。你只要不想换编译器的话,不就只能考虑绕过这个问题么?这也叫护犊子??至于那个分配空间的问题,一个这么基础的功能分割的问题我真不觉得有什么详细描述的价值。

老实说我还真没用过cb的东西。也没有任何所谓“护犊子”的必要。
既然兰州一定要这么理解就没办法了。

但是我还是想说一下,很多时候不要用自己的思维方式去脑补别人的用意。言尽于此,你想咋样就咋样吧,你开心就好。
----------------------------------------------
--
作者:
男 lwm8246a (歼10) ★☆☆☆☆ -
普通会员
2018/4/6 21:09:13
22楼: 按此在新窗口浏览图片
----------------------------------------------
-
作者:
男 wang_80919 (Flying Wang) ★☆☆☆☆ -
普通会员
2018/4/6 22:39:47
23楼: 我看,你们学 C 的都不关心这个 BUG 啊。
如果真的关心,就去 QC 找出 BUG 地址,大家一起投票给 EMB 施压了。

我们 DELPHI 提出的一些容易改的,或者 底层的 严重 BUG,EMB 还是会给改的。
因为 QC 上投票多了,他们也是有压力的。
----------------------------------------------
(C)(P)Flying Wang
作者:
男 bahamut8348 (leonna) ★☆☆☆☆ -
普通会员
2018/4/7 11:10:15
24楼: 也不存在什么关心不关心的说法,c/c++的主流编译器一直都不是cb。。。

另外就是,对于开发者来说,无论编译器是否开源,碰到bug无非就是提交bug。
至于作者是否修复,你只有等。或者换。

从另外一个方面来说,任何产品都会有存在bug的情况。对于使用者来说,必须有两手准备。要么做好代码兼容,要么换版本或换编译器。
----------------------------------------------
--
作者:
男 wang_80919 (Flying Wang) ★☆☆☆☆ -
普通会员
2018/4/7 11:34:10
25楼: 我都不会切换 编译器,也就是说,不切换,就没这个 BUG。

反正我们 DELPHI 的 BUG,在大家的压力下,EMB 不得不修改。
----------------------------------------------
(C)(P)Flying Wang
作者:
男 bcc2cc (bcc2cc) ▲▲▲▲△ -
普通会员
2018/4/7 14:01:14
26楼: to bahamut8348:

C++B的经典编译器来自 BC++, 那是当时绝对的主流编译器,没有之一
C++B的新编译器来自LLVM, 那是当前macOS的主流编译器,没有之一

一个老师会教学生C语言不应该用xxx,老师一般是知道xxx的利弊的, 但是因为学生没能力去分辨这种利弊,所以干脆不要用更适合学生成长
一个学生会说C语言不应该用xxx, 他们一般对这方面没有真正体会, 只是教条化的坚持一些道理
一个非常资深的程序员,知道xxx底下是什么,明白为什么不该用xxx,也明白怎么使用xxx会带来好处, 会把 这种知识用于改进工作,选择性的使用.

以上三者都没错, 他们都做了正确的事情.

就此打住吧,这话题已经扯远了, 没必要继续
祝你学业顺利工作愉快
----------------------------------------------
-
作者:
男 wang_80919 (Flying Wang) ★☆☆☆☆ -
普通会员
2018/4/7 15:21:52
27楼: 你们讨论了 几天。我连 BUG 都无法复现(完全照抄楼主的代码)。
看来,这种 BUG 肯定不会让我遇到了。
朔日 我不喜欢 C,但是如果必须用 C 的时候,我还是会选 CB 。反正我遇不到 BUG。

另外也说明了,你们 C 开发的效率有多低。
简单的 BUG 都无法教会别人去复现。

我们 DLEPHI 的效率就相对高一些。
提出一个 BUG。
会告诉大家 如何操作,这样大家都能复现,找 EMB 算账的时候,人多势众,MEB 不得不改。
----------------------------------------------
(C)(P)Flying Wang
作者:
男 bcc2cc (bcc2cc) ▲▲▲▲△ -
普通会员
2018/4/7 15:42:58
28楼: to wang_80919:

C++builder 使用 clang 32位debug编译下, 产生的代码,无法正确处理大于4K的stack空间,现象为: 可以编译通过,但是运行此处代码会导致进程崩溃

具体重现方法为:
新建一个 c++builder 项目, 然后 option -> c++ compile -> 去掉 use classic 那个钩
然后随便拉个button 触发代码里面随便一个 大于4K的数组

要不顺便帮忙在QC反馈一个
我一直没账号
----------------------------------------------
-
作者:
男 wang_80919 (Flying Wang) ★☆☆☆☆ -
普通会员
2018/4/7 15:55:42
29楼: 这第二段 第一行,很重要。
第二段就没必要了。你帖子已经有了。

8 楼说了,QC 早就有了,你找他要就行。
----------------------------------------------
(C)(P)Flying Wang
作者:
男 bahamut8348 (leonna) ★☆☆☆☆ -
普通会员
2018/4/7 17:35:28
30楼: 首先吧,这到底说的是编译器还是ide?ide本身只是一个大的工具集合而已。

照兰州自己报出来的bug是属于编译器的bug。

或许是我从来没用过cb吧,反正我映象里,一直都很少人用cb。win上经典的是vc而linux一般就是gcc。

至于你说一定要搞清楚为什么;那属于考究的范围了好么?当然我也不是反对考究。不过我一直认为,你要考究之前,先解决实际问题。

然而每个人都有自己的实际需求,对于我来说,c语言就是用来写server程序的。而服务端的程序基本都是自己去控制内存池这些资源的。所以我也一般不会碰到你这种问题。也不会用cb这种东西。要写带ui的程序,有太多其他语言或工具可选了,你一定要用一种方案解决所有问题,本身就有问题。
----------------------------------------------
--
作者:
男 hyz_hz (随风) ★☆☆☆☆ -
普通会员
2018/4/7 23:03:00
31楼: 刚试了10.1.2 好像没有这个问题,楼主别激动,有问题去提bug就是了,或者你哪个代理买的,直接找他们技术支持提.
----------------------------------------------
-
作者:
男 bcc2cc (bcc2cc) ▲▲▲▲△ -
普通会员
2018/4/8 2:15:42
32楼:
to 30楼,    你开心就好吧, 我没空陪你胡扯
----------------------------------------------
-
作者:
男 abcjingtong (jingtong) ★☆☆☆☆ -
普通会员
2018/4/8 9:04:33
33楼: 映象中听过李维说,emb的各种编译器开发者,只有一个日本人。
----------------------------------------------
18114532@qq.com
作者:
男 smartdata (Jack) ★☆☆☆☆ -
普通会员
2018/4/8 13:32:59
34楼: 也发现LLVM在DEBUG下会出问题,Release下没有。不是这个4K问题,在一个项目里面,拖一个TEdit,在DEBUG时有得不到里面的Text,运行时会出错,但换成Release时不会出错,单独New一个工程放TEdit,又不能重现。这个现象在编译成32位出现,64位正常。
----------------------------------------------
==========
作者:
男 bahamut8348 (leonna) ★☆☆☆☆ -
普通会员
2018/4/8 13:38:03
35楼: 真幸运碰到这么个奇葩的楼主。
给你提个解决方案吧,居然首先就特么理直气壮的开喷。
还我胡扯?
算了,当我是胡扯吧。
你那么能你这么不去吧cg的人都咬死去?
没空鸟你这个奇葩的喷子。
----------------------------------------------
--
作者:
男 wang_80919 (Flying Wang) ★☆☆☆☆ -
普通会员
2018/4/8 13:44:25
36楼: 34楼,你这种不能重现,基本上不是开发工具的问题。
如果是的话,肯定可以重现。
楼主在 28 楼,提供了重现步骤。
----------------------------------------------
(C)(P)Flying Wang
作者:
男 zwjchinazwj (蒲石) ★☆☆☆☆ -
普通会员
2018/4/8 13:49:56
37楼: https://quality.embarcadero.com/browse/RSP-20171
----------------------------------------------
-
作者:
男 wang_80919 (Flying Wang) ★☆☆☆☆ -
普通会员
2018/4/8 13:55:21
38楼: 我已经帮你们投了一票。
但是乐意给你们投票的人可能太少了。
----------------------------------------------
(C)(P)Flying Wang
作者:
男 bcc2cc (bcc2cc) ▲▲▲▲△ -
普通会员
2018/4/8 14:46:08
39楼: to smartdata:
你遇到的可能是同一个问题, 4096不一定是一个数组,只要一个子程序里面所有局部变量加起来超过4096就会发生, 所以发生几率其实并不低


to 37 38:
我也去投票了,
感觉 10.2.3解决了这个bug基本上可以安稳用上很长一段时间了
----------------------------------------------
-
作者:
男 smartdata (Jack) ★☆☆☆☆ -
普通会员
2018/4/8 15:19:02
40楼: to bcc2cc:
我是在TForm的派生类(孙子)中发现这个问题,DEBUG时无法获取到TEdit的各种属性,但使用传统的编译器(非LLVM)并开启RTTI即可获得,此时是编译为32位代码;切换为编译64代码时,则可以正常获取。
由于继承较深,没法抽出来做测试DEMO,单独用TFORM继承多次测试也不会出现,估计LLVM编译32位时有问题。
to wang_80919:
谢谢你!我出现的问题的环设置和楼主一样的,没空折腾,先绕过再说。
----------------------------------------------
==========
作者:
男 smartdata (Jack) ★☆☆☆☆ -
普通会员
2018/4/8 15:30:56
41楼: to bcc2cc:
确实如你说的,只要该函数内部的局部变量超过3K多点即可出现此问题,代码如下:
#include <vcl.h>
#pragma hdrstop

#include "Unit4.h"
//----------
#pragma package(smart_init)
#pragma resource "*.dfm"
TForm4 *Form4;
//----------
__fastcall TForm4::TForm4(TComponent* Owner)
  : TForm(Owner)
{
}
//----------
void __fastcall TForm4::Button1Click(TObject *Sender)
{
    BYTE s[2048],k[1024];
    BYTE m[990];//如果注释掉此行,运行正常,否则异常,只能3K多一点
    Caption = Edit1->Text;
}
//----------
上述代码如果使用Borland的编译器和64位编译器则完全正常,仅仅是32位的LLVM编译器问题,

DELPHI则不会:
unit Unit5;

interface

uses
  Winapi.Windows, Winapi.Messages, System.SysUtils, System.Variants, System.Classes, Vcl.Graphics,
  Vcl.Controls, Vcl.Forms, Vcl.Dialogs, Vcl.StdCtrls;

type
  TForm5 = class(TForm)
    Edit1: TEdit;
    Button1: TButton;
    procedure Button1Click(Sender: TObject);
  private
    { Private declarations }
  public
    { Public declarations }
  end;

var
  Form5: TForm5;

implementation

{$R *.dfm}

procedure TForm5.Button1Click(Sender: TObject);
var
s:array[0..4095] of byte;
begin
    Caption := Edit1.Text;
end;

end.
----------------------------------------------
==========
作者:
男 nevergrief (孤独骑士) ★☆☆☆☆ -
盒子活跃会员
2018/4/8 21:35:17
42楼: >>去掉 use classic 那个钩

是不是那个最新的bcc32x编译器造成的?如果是,那情有可原,因为是第一次发表的编译器。
----------------------------------------------
只有偏执狂才能生存!
作者:
男 smartdata (Jack) ★☆☆☆☆ -
普通会员
2018/4/8 22:19:13
43楼: to 42楼 nevergrief (孤独骑士):
没错,就是你说的这个。
----------------------------------------------
==========
作者:
女 zj_mpy (nnnnn) ★☆☆☆☆ -
普通会员
2018/4/9 8:27:14
44楼: 没有这个错误
----------------------------------------------
-
作者:
女 zj_mpy (nnnnn) ★☆☆☆☆ -
普通会员
2018/4/9 8:28:59
45楼: 没有这个错误
此帖子包含附件:
PNG 图像
大小:169.0K
----------------------------------------------
-
作者:
女 zj_mpy (nnnnn) ★☆☆☆☆ -
普通会员
2018/4/9 8:29:25
46楼: 可以运行
此帖子包含附件:
PNG 图像
大小:160.0K
----------------------------------------------
-
作者:
男 smartdata (Jack) ★☆☆☆☆ -
普通会员
2018/4/9 9:32:12
47楼: to zj_mpy (nnnnn):
设置位32位,打开编译选项,去掉 use classic 那个钩,再测试看看有没有?10.2.3版
----------------------------------------------
==========
作者:
男 bcc2cc (bcc2cc) ▲▲▲▲△ -
普通会员
2018/4/9 13:34:36
48楼: to nevergrief:
不新啦, bcc32c都几年了,从10第一版就有了, 而且是从llvm成熟编译器修改来的
有情绪主要是因为这中bug实在太没责任心, 只要是正常软件公司,有点基本的测试,这种bug都是不应该会留在产品中的

有空去这里点支持,给他们抓紧修改的压力
https://quality.embarcadero.com/browse/RSP-20171
----------------------------------------------
-
作者:
男 lzj7015 (lzj) ★☆☆☆☆ -
普通会员
2018/4/9 16:58:29
49楼: 使用C++编程,想不出弃用STL 容器类而使用数组的理由。可能唯一绕不过数组的情形为调用C实现的库函数需传入数组实参(通常还需传入数组长度),有完美的解决方法:传入容器类实例的迭代器起始位置(通常还需传入容器类实例长度)。不使用数组已有10多年了。
----------------------------------------------
-
作者:
男 bcc2cc (bcc2cc) ▲▲▲▲△ -
普通会员
2018/4/11 2:07:15
50楼: to lzj7015
需求不同,习惯不同, 争论"程序应该怎么写"这种低级问题是很low的行为
C的数组参数不是你以为的那么处理的, 写个带数组参数的函数看一下 asm 就明白了,比我说更明白.
----------------------------------------------
-
作者:
男 yayongm (昵  称) ★☆☆☆☆ -
盒子活跃会员
2018/4/11 8:25:48
51楼: 又学会一个坑!!!遇到时知道要避过了。。。
----------------------------------------------
弱小和无知不是生存的障碍,傲慢才是!
作者:
男 wang_80919 (Flying Wang) ★☆☆☆☆ -
普通会员
2018/4/18 8:50:37
52楼: https://quality.embarcadero.com/browse/RSP-20171
也不知道你们走了什么 狗屎运。
BUG 居然给你们 HOTIFX 了。
1月20日提交的
4月18日FIX了。
相当快了,DELPHI 也没几个这样快的。
https://cc.embarcadero.com/Item/30834
----------------------------------------------
(C)(P)Flying Wang
作者:
男 liminx (liminx) ★☆☆☆☆ -
普通会员
2018/4/19 8:48:30
53楼: 赞一个
----------------------------------------------
-
作者:
男 vga (vga) ★☆☆☆☆ -
盒子活跃会员
2018/4/19 16:01:20
54楼: C++Builder 10.2.3 C++ Compiler 4k Stack Allocation Patch Released On 17-04-2018
----------------------------------------------
-
作者:
男 wang_80919 (Flying Wang) ★☆☆☆☆ -
普通会员
2018/4/19 16:04:08
55楼: 不看后悔已内置。
----------------------------------------------
(C)(P)Flying Wang
作者:
男 boyla (土著巫师) ★☆☆☆☆ -
普通会员
2018/4/22 16:35:58
56楼: @wang_80919 (Flying Wang)

已通过QQ群(165232328)下载到最新的“不看后悔”及此BUG最新的补丁,感谢。

(好像论坛里也有俺一样的新同学不知道哪里下载“不看后悔”,希望此回复有用:)
----------------------------------------------
妹聊的不是BUG是追求,哥写的不是CODE是梦想。
作者:
男 boyla (土著巫师) ★☆☆☆☆ -
普通会员
2018/4/22 23:13:43
57楼: @All 
  杯具了,升级完C++Builder 10.2.3 C++ Compiler 4k Stack Allocation Patch Released On 17-04-2018补丁后,发现原来一个多平台C++Builder应用编译出错了(没有改过代码,升级前好好的),WIN32平台没有问题,WIN64和安卓平台bcc64和bccaarm给出的提示一样的:
[bcc64或bccaarm(平台不同编译器名称不同) Error] no matching constructor for initialization of 'System::Sysutils::Exception'
  System.SysUtils.hpp(480): candidate constructor not viable: requires single argument 'Msg', but no arguments were provided
  System.SysUtils.hpp(481): candidate constructor not viable: requires 3 arguments, but 0 were provided
  System.SysUtils.hpp(482): candidate constructor not viable: requires single argument 'Ident', but no arguments were provided
  System.SysUtils.hpp(483): candidate constructor not viable: requires single argument 'ResStringRec', but no arguments were provided
  System.SysUtils.hpp(484): candidate constructor not viable: requires 3 arguments, but 0 were provided
  System.SysUtils.hpp(485): candidate constructor not viable: requires 3 arguments, but 0 were provided
  System.SysUtils.hpp(486): candidate constructor not viable: requires 2 arguments, but 0 were provided
  System.SysUtils.hpp(487): candidate constructor not viable: requires 4 arguments, but 0 were provided
  System.SysUtils.hpp(488): candidate constructor not viable: requires 2 arguments, but 0 were provided
  System.SysUtils.hpp(489): candidate constructor not viable: requires 2 arguments, but 0 were provided
  System.SysUtils.hpp(490): candidate constructor not viable: requires 4 arguments, but 0 were provided
  System.SysUtils.hpp(491): candidate constructor not viable: requires 4 arguments, but 0 were provided
  System.SysUtils.hpp(458): candidate constructor (the implicit copy constructor) not viable: requires 1 argument, but 0 were provided
Failed

简单试了一个全新的项目包含System.SysUtils.hpp或不包含此头文件都没有问题。
NND,老项目为什么就不行呢,郁闷。太晚了,先阿呼。
----------------------------------------------
妹聊的不是BUG是追求,哥写的不是CODE是梦想。
作者:
男 boyla (土著巫师) ★☆☆☆☆ -
普通会员
2018/4/23 17:37:30
58楼: @All 
  WIN32平台,不使用传统的BCC32编译器,使用CLang的BCC32C编译器,提示同样错误:
[bcc32c Error] no matching constructor for initialization of 'System::Sysutils::Exception'
  System.SysUtils.hpp(480): candidate constructor not viable: requires single argument 'Msg', but no arguments were provided
  System.SysUtils.hpp(481): candidate constructor not viable: requires 3 arguments, but 0 were provided
  System.SysUtils.hpp(482): candidate constructor not viable: requires single argument 'Ident', but no arguments were provided
  System.SysUtils.hpp(483): candidate constructor not viable: requires single argument 'ResStringRec', but no arguments were provided
  System.SysUtils.hpp(484): candidate constructor not viable: requires 3 arguments, but 0 were provided
  System.SysUtils.hpp(485): candidate constructor not viable: requires 3 arguments, but 0 were provided
  System.SysUtils.hpp(486): candidate constructor not viable: requires 2 arguments, but 0 were provided
  System.SysUtils.hpp(487): candidate constructor not viable: requires 4 arguments, but 0 were provided
  System.SysUtils.hpp(488): candidate constructor not viable: requires 2 arguments, but 0 were provided
  System.SysUtils.hpp(489): candidate constructor not viable: requires 2 arguments, but 0 were provided
  System.SysUtils.hpp(490): candidate constructor not viable: requires 4 arguments, but 0 were provided
  System.SysUtils.hpp(491): candidate constructor not viable: requires 4 arguments, but 0 were provided

有点吃不消EMB的HOTFIX了 :(
实在不行只能倒回去,反正WIN32平时也不用BCC32C编译器,基本都是使用传统BCC32编译器,不会碰到C++Builder 10.2.3 C++ Compiler 4k Stack Allocation Patch Released On 17-04-2018这个BUG。
----------------------------------------------
妹聊的不是BUG是追求,哥写的不是CODE是梦想。
作者:
男 crystalmoon (crystalmoon) ★☆☆☆☆ -
盒子活跃会员
2018/4/25 17:11:47
59楼: 顶楼上,我C++不懂呢,全新编译试试。。。。
----------------------------------------------
-
作者:
男 boyla (土著巫师) ★☆☆☆☆ -
普通会员
2018/4/28 16:59:27
60楼: @All
  出错与升级没有直接关系,原因已找到,另外开了帖子:http://bbs.2ccc.com/topic.asp?topicid=546779
----------------------------------------------
妹聊的不是BUG是追求,哥写的不是CODE是梦想。
信息
登陆以后才能回复
Copyright © 2CCC.Com 盒子论坛 v3.0.1 版权所有 页面执行148.4375毫秒 RSS