社区
C++ 语言
帖子详情
一个必定使vc2005sp1编译器崩溃的代码
Oversense
2007-05-17 01:04:19
template <int n>
struct s
{
enum { value = s<n-1>::value };
};
template<>
struct s<0>
{
enum { value = 0 };
};
int main()
{
s<490>::value;
}
一直以来,我都相信,vc的编译器代码是拼凑出来。
...全文
1052
32
打赏
收藏
一个必定使vc2005sp1编译器崩溃的代码
template struct s { enum { value = s::value }; }; template struct s { enum { value = 0 }; }; int main() { s::value; } 一直以来,我都相信,vc的编译器代码是拼凑出来。
复制链接
扫一扫
分享
转发到动态
举报
写回复
配置赞助广告
用AI写文章
32 条
回复
切换为时间正序
请发表友善的回复…
发表回复
打赏红包
iambic
2007-05-18
打赏
举报
回复
to Oversense: 我想你可能没看懂我的意思,或者是太低估我了。你的两个数据也说明不了实际的问题,前者编译时间短是由于代码规模小,后者运行时间长是由于代码算法太差。
Oversense
2007-05-18
打赏
举报
回复
to iambic,没有实践,就没有发言权
下面的例子,在vc2005sp1 上,第一个编译的时间是1,第二个运行的时间是100000
template <int n>
struct f
{
enum {value=f<n-1>::value+f<n-2>::value};
};
template<>
struct f<1>
{
enum {value=1};
};
template<>
struct f<2>
{
enum {value=1};
};
long F (long n)
{
if (n==1 || n==2)
{
return 1;
}
else
{
return F(n-1)+F(n-2);
}
}
int main()
{
std::cout<<f<45>::value<<std::endl;
std::cout<<F(45)<<std::endl;
return 0;
}
Oversense
2007-05-18
打赏
举报
回复
to 楼上的,看好你的版本,vc2005sp1
泥巴娃
2007-05-18
打赏
举报
回复
完全是无稽,根本不会 crash
Oversense
2007-05-18
打赏
举报
回复
to 楼上的,可以这么认为
femalelover
2007-05-18
打赏
举报
回复
借步步文的地方问一下, 是不是G++, VC2005在编译模板的时候, 都只支持所谓的"包含模型"啊, 就是说模板的声明与定义都必须在头文件中, 否则链接出错了.
dai_weitao
2007-05-18
打赏
举报
回复
模板的递归不单单是一种极限测试, 它实际上作用很大.
只是还没有一款真正好的编译器去支持
Red_angelX
2007-05-18
打赏
举报
回复
原来如此.
Rainstorey
2007-05-18
打赏
举报
回复
模板嵌套递归
lidongri
2007-05-18
打赏
举报
回复
模板元编程
qhgary
2007-05-18
打赏
举报
回复
该结帖了吧.
tidyduck
2007-05-18
打赏
举报
回复
传说中的模板递归啊,踩一脚!~~
星羽
2007-05-17
打赏
举报
回复
恩,传说中的
xuleier
2007-05-17
打赏
举报
回复
这种问题都被发现了?
qhgary
2007-05-17
打赏
举报
回复
难道这就是传说中的递归模版?
taodm
2007-05-17
打赏
举报
回复
要求太高了。
Oversense
2007-05-17
打赏
举报
回复
我的意思,他应该出提示,而不是crash.
iambic
2007-05-17
打赏
举报
回复
>>不会吧
>>我编译的时间几乎是瞬时的..
这么几行代码当然很快啦,项目大起来速度就很慢了。
如果说从模板诞生的时候就有这种问题,那模板元应该要把这个问题发挥到极致了。
whoho
2007-05-17
打赏
举报
回复
特殊化递归层数在C++标准上并没有什么规定,只是“建议”了一个很小的数值,
490导致vc无法编译是很正常的,不值得大惊小怪.
至于VC编译器的拼凑之说,顶多只能算揣测吧,从前不好说,但在Stanley B. Lippman
这个C++世界的顶尖高手加盟微软以后,主持新版VC编译器的开发,应该说,VC的品质
已经有了质的飞跃
goodluckalong
2007-05-17
打赏
举报
回复
mark
加载更多回复(12)
Visual C++ 6.0 专业便携版
Visual C++ 6.0 专业便携版 1.仅用于技术学习交流之用,禁止用于一切商业用途。 2.对于使用本人的软件所造成的一切损失及后果由使用者自行承担。 3.使用前先将压缩包解压到磁盘上,运行“安装.exe”开始初始化环境配置,这个过程仅在首次使用时执行一次。 4.安装后会生成“unins000.exe”和“unins000.dat”前者是卸载程序,后者保存着卸载数据,请勿删除。 5.需要卸载时,直接运行“unins000.exe”即开始卸载。 对原版的修改: 1.解除了原版不能打开超过 256 色位图的限制。 2.解除了原版字体选项过少的限制。 3.增加对 .asm 和 .inc 汇编类型文件的支持,向项目添加此类文件时,会被默认归类到“Source Files”和“Header Files”分类下。 4.替换 c2.dll 版本为 13.0.9044.0 ,支持内联汇编的 SSE 指令。 5.修改 VC6 版本号为 "6.x" ,使同一系统中能和其他版本的 VC6 共存。 增加的内容: 1.集成 Visual Assist X、WndTabs 插件。 2.集成 DevTrueColour.dll 和 FileTool.dll 插件,前者是字体颜色选择插件,后者是用于 Vista 以上系统中用来替代 IDE 本身的添加和打开文件功能,以防止 IDE
崩溃
。 3.集成 VS 2008 SP1 的 ml.exe ,增加对汇编的支持。 4.集成 Glut 3.7 beta。 5.集成 企业版核心组件。 SDK 集成: 1.集成 Windows 2003 SDK ,这是微软官方最后
一个
支持 VC 6 的 SDK 版本。 2.集成 WTL 和 VFC 。 3.集成 STL Port、SGI STL 两者任选其一,可用来代替 VC 6 自带的 STL 以获得更好的性能。 4.集成 Native Development Kit 。 5.集成 Masm32 ,方便编写和调试简单的汇编程序。 6.集成 Boost C++ 库。
编译器
集成: 1.集成 Intel C++ 10
编译器
,这是能支持 VC6 的最后
一个
Intel C++
编译器
。
Visual C++ 6.0专业便携版,亲测Win10 1803可用
Visual C++ 6.0 专业便携版 1.仅用于技术学习交流之用,禁止用于一切商业用途。 2.对于使用本人的软件所造成的一切损失及后果由使用者自行承担。 3.使用前先将压缩包解压到磁盘上,运行“安装.exe”开始初始化环境配置,这个过程仅在首次使用时执行一次。 4.安装后会生成“unins000.exe”和“unins000.dat”前者是卸载程序,后者保存着卸载数据,请勿删除。 5.需要卸载时,直接运行“unins000.exe”即开始卸载。 对原版的修改: 1.解除了原版不能打开超过 256 色位图的限制。 2.解除了原版字体选项过少的限制。 3.增加对 .asm 和 .inc 汇编类型文件的支持,向项目添加此类文件时,会被默认归类到“Source Files”和“Header Files”分类下。 4.替换 c2.dll 版本为 13.0.9044.0 ,支持内联汇编的 SSE 指令。 5.修改 VC6 版本号为 "6.x" ,使同一系统中能和其他版本的 VC6 共存。 增加的内容: 1.集成 Visual Assist X、WndTabs 插件。 2.集成 DevTrueColour.dll 和 FileTool.dll 插件,前者是字体颜色选择插件,后者是用于 Vista 以上系统中用来替代 IDE 本身的添加和打开文件功能,以防止 IDE
崩溃
。 3.集成 VS 2008 SP1 的 ml.exe ,增加对汇编的支持。 4.集成 Glut 3.7 beta。 5.集成 企业版核心组件。 SDK 集成: 1.集成 Windows 2003 SDK ,这是微软官方最后
一个
支持 VC 6 的 SDK 版本。 2.集成 WTL 和 VFC 。 3.集成 STL Port、SGI STL 两者任选其一,可用来代替 VC 6 自带的 STL 以获得更好的性能。 4.集成 Native Development Kit 。 5.集成 Masm32 ,方便编写和调试简单的汇编程序。 6.集成 Boost C++ 库。
编译器
集成: 1.集成 Intel C++ 10
编译器
,这是能支持 VC6 的最后
一个
Intel C++
编译器
。 by cntrump December 25, 2010
VC#.NET+GDI+开发交互式CAD系统
本课程用VC#.NET结合GDI+,从无到有开发
一个
功能较完整的小型交互式CAD系统。作者有交互式CAD系统、动态几何系统开发经验。出版过交互式CAD系统开发方面的图书。课程先讲准备知识,然后讲整个系统的开发思路和主要技术,最后将整个系统分成8个版本,从最简单的绘图开始,逐步添加功能,循序渐进地进行讲解。知识点讲解细致,系统。课程的核心在于源
代码
,学习每章内容之前,请先下载本章源码。建议先自行对源码进行阅读分析,然后带着问题去听课,这样学习效率比较高,效果比较好一些。课程最终提供的内容和服务:PPT+源码+视频讲解+持续升级/****课程第一节课为免费课,演示了系统的主要功能。可以用手机或电脑观看。如果无法观看,请私信我。谢谢!*****/友情提醒:凭订单信息可找平台客服开具发票。购买系列课程提供打包价,购买讲师卡更划算。
vc 编译的那些事儿
最近又被ms的编译选译纠结了一下,运行程序是老是弹出0x14b1 or 71 这类的错误,,之前也遇到过,不过都很快解决,这次花了好几个小时,也是以前从来总结的结果,今天在这儿小结一下。 如果不依赖mfc 开发环境,如开发功能dll, 配置属性-常规-mfc的使用 选“使用标准的windows库”,这儿就别改别的了。 然后就是运行时库的问题 在发布时配置 c/c
VS2005中使用boost ::bind导致error PRJ0002
今天发现在VS 2005环境下使用boost ::bind来定义使用错误就会引起
编译器
崩溃
。错误信息是:项目 : error PRJ0002 : 错误的结果 1 (从“C:/Program Files/Microsoft Visual Studio 8/VC/bin/cl.exe”返回)。当然这个错误信息还有可能是其它原因导致的,这里提到的仅仅是其中的一种。 在网上找了些资料,现在
C++ 语言
64,654
社区成员
250,484
社区内容
发帖
与我相关
我的任务
C++ 语言
C++ 语言相关问题讨论,技术干货分享,前沿动态等
复制链接
扫一扫
分享
社区描述
C++ 语言相关问题讨论,技术干货分享,前沿动态等
c++
技术论坛(原bbs)
社区管理员
加入社区
获取链接或二维码
近7日
近30日
至今
加载中
查看更多榜单
社区公告
请不要发布与C++技术无关的贴子
请不要发布与技术无关的招聘、广告的帖子
请尽可能的描述清楚你的问题,如果涉及到代码请尽可能的格式化一下
试试用AI创作助手写篇文章吧
+ 用AI写文章