刚才试验了 XE7 和 XE6 的 Win64 编译器有相同的 BUG

时间:2022-08-22 00:54:19
[bcc64 Error] Unit1.cpp(1): ICE: Internal compiler error: C0000005 @ 23E98CFD


class TMyClass
{
public:
  String MyFunc(const wchar_t *fmt...);
};

String TMyClass::MyFunc(const wchar_t *fmt...)
{
  String s;
  return s;
}


刚才试验了 XE7 和 XE6 的 Win64 编译器有相同的 BUG

17 个解决方案

#1


这种bug 最恶心了

#2


可能EMB根本不知道有这样的BUG存在。

#3


让代码去适应编译器吧!

#4


现有的项目有几个 ... 参数的函数用的比较多,改起来比较麻烦,感觉都把这个都改完了还肯定会有其他 BUG,改起来就没完了。
现在不是急着做 64 位的程序,先等等吧,可能等我用的时候编译器就好了,也可能到那时候就换编译器了。
XE5 之前的64位程序不能编译自己做的控件,XE6开始能编译自己做的控件的,所以只有XE6开始测试过64位编译器,之前的64位看都没看,无论有没有BUG都不能用。

#5


也就是说,如果现在着急做64位的项目,肯定就换编译器了,不能用C++ Builder。

#6


我一般的都是声明完了直接先赋值String s=L"";

不知道对BUG有没有用 

#7


应该是对 ... 可变参数支持不够好。
 String MyFunc(const wchar_t *fmt , ...); 
这里也该加个逗号的,可是不加也应能给出错误提示吧。随便给个Internal compiler error:,也不定位错误行,说是BUG也不为过。

#8


试试可变参数...前加个逗号看看还出错不,我未装64位,也未装XE6与7

#9


有没有逗号都一样,都试验过了,都是编译器内部错误

#10



class TMyClass
{
public:
  String MyFunc(const wchar_t *fmt, ...);
};

String TMyClass::MyFunc(const wchar_t *fmt, ...)
{
  String s;
  return s;
}

刚才试验了 XE7 和 XE6 的 Win64 编译器有相同的 BUG

#11


不用String就好了,不知为何。

#12


c++builder的编译器是在是烂到爆。起码的sfinae都不行。可笑的是自带一个boost,编译也通不过。

#13


唉... 这不是打击我的升级积极性么 

#14


XE7 的x64编译器还是基于clang3.1的,估计弄出来之后就没管过了。

#15


clang3.6了吧,要是能同步升级clang版本就好了

#16


我感觉这clang/llvm编译器是一种倒退,庞大而缓慢,不支持unicode标识符,不支持intel语法的嵌入汇编,简直一无是处。说到多平台支持,Delphi编译器照样支持啊,EMB也不是没有自己开发编译器的能力,何必拾人牙慧。

#17


后期都不维护了

#1


这种bug 最恶心了

#2


可能EMB根本不知道有这样的BUG存在。

#3


让代码去适应编译器吧!

#4


现有的项目有几个 ... 参数的函数用的比较多,改起来比较麻烦,感觉都把这个都改完了还肯定会有其他 BUG,改起来就没完了。
现在不是急着做 64 位的程序,先等等吧,可能等我用的时候编译器就好了,也可能到那时候就换编译器了。
XE5 之前的64位程序不能编译自己做的控件,XE6开始能编译自己做的控件的,所以只有XE6开始测试过64位编译器,之前的64位看都没看,无论有没有BUG都不能用。

#5


也就是说,如果现在着急做64位的项目,肯定就换编译器了,不能用C++ Builder。

#6


我一般的都是声明完了直接先赋值String s=L"";

不知道对BUG有没有用 

#7


应该是对 ... 可变参数支持不够好。
 String MyFunc(const wchar_t *fmt , ...); 
这里也该加个逗号的,可是不加也应能给出错误提示吧。随便给个Internal compiler error:,也不定位错误行,说是BUG也不为过。

#8


试试可变参数...前加个逗号看看还出错不,我未装64位,也未装XE6与7

#9


有没有逗号都一样,都试验过了,都是编译器内部错误

#10



class TMyClass
{
public:
  String MyFunc(const wchar_t *fmt, ...);
};

String TMyClass::MyFunc(const wchar_t *fmt, ...)
{
  String s;
  return s;
}

刚才试验了 XE7 和 XE6 的 Win64 编译器有相同的 BUG

#11


不用String就好了,不知为何。

#12


c++builder的编译器是在是烂到爆。起码的sfinae都不行。可笑的是自带一个boost,编译也通不过。

#13


唉... 这不是打击我的升级积极性么 

#14


XE7 的x64编译器还是基于clang3.1的,估计弄出来之后就没管过了。

#15


clang3.6了吧,要是能同步升级clang版本就好了

#16


我感觉这clang/llvm编译器是一种倒退,庞大而缓慢,不支持unicode标识符,不支持intel语法的嵌入汇编,简直一无是处。说到多平台支持,Delphi编译器照样支持啊,EMB也不是没有自己开发编译器的能力,何必拾人牙慧。

#17


后期都不维护了