文档章节

如何写一份代码让编译器编译很久

__赵小刚__
 __赵小刚__
发布于 2014/12/22 11:41
字数 300
阅读 297
收藏 1

这个周末有幸见到了几位神交已久的库友(天天/迪迪/丁丁),大家一起扯了些有的没的,很开森!

丁丁又提起我曾经提出的那个问题“如何写一份代码让编译器编译很久?”

我记得当时我在群里提出这个问题时,波波和我首先想到的是利用C++的模板,让模板递归嵌套,或许会编译很久。

我测试发现gcc在模板递归嵌套500层之后就报错退出了,这个法子行不通。

后来我换了个法子达到了编译很久的目的,原理超级简单,一看代码便知:

template <unsigned A, unsigned B>
struct S {
    static const unsigned V = S<A, B-1>::V + S<A+(1<<(B-1)), B-1>::V;
};

template <unsigned A>
struct S<A, 0> {
    static const unsigned V = 1;
};

int main() {
    return S<0, 32>::V;
}


© 著作权归作者所有

共有 人打赏支持
__赵小刚__
粉丝 5
博文 43
码字总数 19963
作品 0
成都
程序员
私信 提问
加载中

评论(1)

赵云30
赵云30
问题很好,代码看不懂。:)
深夜中,关于c语言的疑问:文件操作和输出。

很久很久没有写过c语言了,这学期因为没有去班会,所以在学分够的情况下选修了,编译原理。3周前让写一个编译器。 遇到了一个很纠结的问题。我读取一个文件的里字符然后输出。但是我在控制台...

SwordHua
2013/02/08
0
0
C++模板的实现(模板函数和模板类,附带模板实现顺序表和链表代码)

模板  当我们实现一个交换函数时,我们可以写成如下。  这里只能交换两个整数,当我们一会需要实现两个字符交换时,我们有需要重新写个函数,然而两份代码有很多相同的部分,这样是不是很麻...

qq_38646470
2018/05/05
0
0
自己写一个编译器:第一天:设计语法

// 请移步《从零开发一个JVM语言》系列。 // 由于这篇文章有人收藏就不删除了。。 写代码时常被null值困扰,一般来说不是什么问题,花些时间也就解决了。最近实在忍不了,把自己代码里所有可...

wkgcass
2016/02/06
86
5
记一次灵异般的 Bug 调试经历

我曾经受雇于一位心理学家,去修复一个“输出有些奇怪的”软件,那个软件是他之前带过的一个研究生编写的。这款软件会读取一个数据文件,询问用户 50 个问题,进行一些计算并且根据该博士的研...

oschina
2016/05/15
3.4K
14
送书丨编程达到一个高的境界就是自制脚本语言

点击上方“程序人生”,选择“置顶公众号” 第一时间关注程序猿(媛)身边的故事 小贴士 参与文末话题讨论,有机会获得赠书~ 编程达到一个高的境界就是自制脚本语言,通过这可以精通编程里面...

CSDN程序人生
2018/08/29
0
0

没有更多内容

加载失败,请刷新页面

加载更多

容器服务

简介 容器服务提供高性能可伸缩的容器应用管理服务,支持用 Docker 和 Kubernetes 进行容器化应用的生命周期管理,提供多种应用发布方式和持续交付能力并支持微服务架构。 产品架构 容器服务...

狼王黄师傅
昨天
3
0
高性能应用缓存设计方案

为什么 不管是刻意或者偶尔看其他大神或者大师在讨论高性能架构时,自己都是认真的去看缓存是怎么用呢?认认真真的看完发现缓存这一块他们说的都是一个WebApp或者服务的缓存结构或者缓存实现...

呼呼南风
昨天
12
0
寻找一种易于理解的一致性算法(扩展版)

摘要 Raft 是一种为了管理复制日志的一致性算法。它提供了和 Paxos 算法相同的功能和性能,但是它的算法结构和 Paxos 不同,使得 Raft 算法更加容易理解并且更容易构建实际的系统。为了提升可...

Tiny熊
昨天
3
0
聊聊GarbageCollectionNotificationInfo

序 本文主要研究一下GarbageCollectionNotificationInfo CompositeData java.management/javax/management/openmbean/CompositeData.java public interface CompositeData { public Co......

go4it
昨天
3
0
阿里云ECS的1M带宽理解

本文就给大家科普下阿里云ECS的固定1M带宽的含义。 “下行带宽”和“上行带宽” 为了更好的理解,需要先给大家解释个词“下行带宽”和“上行带宽”: 下行带宽:粗略的解释就是下载数据的最大...

echojson
昨天
10
0

没有更多内容

加载失败,请刷新页面

加载更多

返回顶部
顶部