社区
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的编译器代码是拼凑出来。
...全文
1070
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
windows下安装OMNET++3.3版本详细步骤
非常详细,可以作为入门学习者参考,但是不是OMNET4.0版本的,4.0版本的安装相对简单些,我曾装过4.0的,但是换到其它机器上装的时候,一直不成功,至今,不知道原因在哪里……
VcRedist:Microsoft Visual C ++可再发行组件的生命周期管理
VcRedist:Microsoft Visual C ++可再发行组件的生命周期管理
深入理解Microsoft Visual C++ 2005 SP1运行组件
Microsoft Visual C++ 2005 SP1是微软推出的一款针对C++开发的集成开发环境(IDE),它集成了开发工具和库,允许开发者创建高性能的应用程序。SP1代表Service Pack 1,它为Visual C++ 2005添加了若干更新和修补程序,提高了产品的稳定性和安全性。在现代软件开发中,运行时库(Runtime Library)是软件程序运行时依赖的库文件的集合。
C++ 语言
65,208
社区成员
250,517
社区内容
发帖
与我相关
我的任务
C++ 语言
C++ 语言相关问题讨论,技术干货分享,前沿动态等
复制链接
扫一扫
分享
社区描述
C++ 语言相关问题讨论,技术干货分享,前沿动态等
c++
技术论坛(原bbs)
社区管理员
加入社区
获取链接或二维码
近7日
近30日
至今
加载中
查看更多榜单
社区公告
请不要发布与C++技术无关的贴子
请不要发布与技术无关的招聘、广告的帖子
请尽可能的描述清楚你的问题,如果涉及到代码请尽可能的格式化一下
试试用AI创作助手写篇文章吧
+ 用AI写文章