compiler-construction相关内容

如何驱动器C#,C ++或Java编译器来计算1 + 2 + 3 + ... + 1000?

在最近的一次采访中,有人问我一个很奇怪的问题。面试官问我,我怎么能计算1 + 2 + 3 + ... + 1000只使用编译器功能。这意味着,我不能写一个程序并执行它,但我应该只是写一个程序,可以驱动编译器来计算这笔款项,而汇编和编纂完成时打印结​​果。作为一个暗示,他告诉我,我可能会使用的编译器的泛型和pre-处理器功能。它可以使用C ++,C#或Java编译器。任何想法??? 这个问题是不相 ..
发布时间:2016-08-29 12:45:09 Java开发

C#编译器的优化 - 未使用方法

请问C#编译器(在VS2008或VS2010),而编制删除未使用的方法是什么? 我认为它可能决定是否将永远不会使用的公共方法出了问题,所以我想它会编译所有的公共方法。 但是对于那些从来类内部使用的私有方法呢? 编辑: 是否有任何地方都记录了一系列关于编译器的optmization规则? 解决方案 在反射刚才检查了发布版本。编译器的不删除未使用的私有方法。 有办法用一个方法,无需编 ..

如何仿制药获得由JIT编译器编译?

我知道泛型编译通过JIT(如一切),而相比之下,当你编译code生成模板。结果 问题是,新的通用类型可以在运行时通过使用反射来创建。结果 这当然会影响到通用的约束。其中已通过语义分析程序。 有人能解释这是怎么处理的?而到底发生了什么?结果 (无论是code生成和语义检查) 解决方案 我建议在C#,Java的,和C阅读 ++泛型:安德斯Hejlsberg为一个会话 QN 1.如 ..
发布时间:2016-08-28 14:42:56 C#/.NET

本身工作之类的内部是如何创建类的实例,一个?

是什么使得它可以将类本身内部创建类的实例? 公共类My_Class { My_Class new_class =新My_Class(); } 我知道这是可能的,这样做自己,但我仍无法让自己相信,这是不是有点像“谁是第一? - 先有鸡还是先有蛋”类型的问题。我可以很高兴地收到答案从编程的角度,以及从JVM /编译器的角度澄清这一点。我想了解,这将帮助我明确面向对象编程的一些很重要 ..
发布时间:2016-08-28 14:38:03 Java开发

C#空语句

借助 C#语言规范定义的 empty-声明的语法生产,这可以让我做这样的事情: 静态无效的主要(字串[] args) { ; ; ; } 为什么微软包括C#语言这个文法生产的?它有一个有用的目的? 解决方案 而(GetWhitespace(文本流)) ; ..
发布时间:2016-08-28 13:45:30 C#/.NET

在C#编译器鸭打字

注意这是的不的一个有关如何实现或者用C模仿鸭子类型的问题#... 几年来,我是IM pression某些C#语言的特点进行depdendent在语言本身定义的数据结构下(这似乎总是像一个奇怪的鸡肉和放大器;蛋的情况对我来说)。例如,我是IM pression的的foreach 循环是仅可用于实现类型下使用的IEnumerable 。 从那时起,我认识到,C#编译器使用鸭子类型,以确定是否一个对 ..
发布时间:2016-08-28 13:04:14 C#/.NET

在语句块变量范围

的for(int i = 0;我小于10;我++) { 美孚(); } INT I = 10; //错误,'我'已经存在----------------------------------------的for(int i = 0;我小于10;我++) { 美孚(); } 我= 10; //错误,'我'不存在 根据我的理解范围,第一个例子应该罚款。他们都没有被允许的事实似乎更奇怪 ..
发布时间:2016-08-26 21:57:38 C#/.NET

为什么C#编译器发出一个callvirt指令的的GetType()方法调用?

我很好奇,想知道这是为什么发生。请阅读下面的code的例子,那就是在每个部分下面的评论发出的相应IL: 使用系统;类节目 { 静态无效的主要() { 对象o =新的对象(); o.GetType(); // L_0001:newobj实例无效[mscorlib程序] System.Object的构造函数::() // L_0006:stloc.0 ..
发布时间:2016-08-26 21:29:04 C#/.NET

C#编译器数量文字

有谁知道C#编译器数量文字修饰的完整列表? 在默认情况下,宣布“0”使一个Int32和'0.0'使它成为“双师型”。我可以用文字修饰'F'末,以确保一些被视为'单'代替。例如像这样... VAR X = 0; // x是的Int32 变种Y = 0F; // y是单 什么是其他修饰符可以使用吗?是否有一个强制为双,小数,UInt32的?我尝试使用Google的这一点,但无法找到任何东西。 ..
发布时间:2016-08-26 21:26:04 C#/.NET

无法加载文件或程序集...参数不正确

最近,我遇到了以下异常在C#中的解决方案: 错误2未能加载文件或程序集“Newtonsoft.Json, 版本= 3.5.0.0,文化=中性公钥= b9a188c8922137c6“或 它的一个依赖。参数不正确。 (异常来自 HRESULT:80070057(E_INVALIDARG)) 这不取决​​于无论是在我的code或总成(如 Newtonsoft.Json 在这种情况下) ..
发布时间:2016-08-26 16:08:53 C#/.NET

如果的Int32只是一个别名INT,如何能的Int32类使用int?

被浏览过 .NET框架参考源的.NET源$ C ​​$ C,只是为了好玩。并发现了一些我不明白。 有一个的 Int32.cs 的用C#code文件的Int32 键入。不知怎的,这似乎很奇怪,我。如何在C#编译器编译code为的Int32 键入? 公共结构的Int32:IComparable的,IFormattable,IConvertible { 内部INT m_value; / ..
发布时间:2016-08-26 15:42:27 C#/.NET

在哪里可以了解与调试“魔法姓名”

如果你曾经使用反射,你可能注意到C#编译器生成类型,方法,字段和局部变量,通过调试器值得“特别”的显示。例如,对于'CS $'开始局部变量不显示给用户。还有其他一些特殊的命名约定封闭类型的匿名方法,自动属性的支持领域,等等。 我的问题:在哪里可以了解这些命名约定?有谁知道一些文档? 我的目标是让PostSharp 2.0使用相同的约定。 解决方案 这是编译器的无证实施细则,并随时更改。 ..
发布时间:2016-08-26 14:24:36 C#/.NET

如何在C#编译器检测到COM类型?

编辑:我已经写的结果成一个的博客文章。 C#编译器把COM类型有点神奇。例如,这个语句看起来正常... Word.Application应用=新Word.Application(); ...直到你意识到应用是一个接口。调用接口的构造? Yoiks!这实际上被转换成调用 ..
发布时间:2016-08-26 14:21:46 C#/.NET

是否可以动态地编译和执行C#code片段?

我想知道是否有可能为C#code片段保存到一个文本文件(或任何输入流),然后执行这些动态?假设是什么提供给我将编译任何的Main()块内精细,是否有可能来编译和/或执行该code?我想preFER编译它性能方面的原因。 最起码,我可以定义他们将需要实现一个接口,那么他们将提供一个code'节'是实现该接口。 解决方案 在C#中的最佳解决方案/所有静态.NET语言是使用的 ..
发布时间:2016-08-26 13:47:50 C#/.NET

C ++不能建立处理参照“父”对象 - 圆形包括或未定义类型的错误

我期待有一个分层的类结构,其中控制器的水平“父”类负责创建/引导一批'孩子'类。父类应该能够引用每次直接创造的孩子,每个孩子应该能够引用它的父(和,假设这孩子是不是也多类的父,只有其父)直接。这使得兄弟姐妹通过父引用。我发现这种模式是在JIT编译语言如Java和C#有用的,但C ++ presents一个独特的问题... 我的第一个实施这种模式的尝试如下: TreeRoot.h父类 的#if ..
发布时间:2016-08-25 09:33:50 C/C++开发

MinGW的编译器不需要函数声明?

我有这两个文件: // first.c 诠释主要(无效){ putint(3); } 和 // second.c #包括LT&;&stdio.h中GT; 无效putint(INT N){ 的printf(“%d个”,N); 的getchar(); } 当我在Win XP下运行gcc 4.6.1: GCC first.c second.c -o的Program.exe 它 ..
发布时间:2016-08-25 09:32:21 C/C++

流程或库的多个副本之间的C字符串常量存储

什么是各种系统的行为,当你有一个特别的程序或库运行的多个副本,做字符串获取存储在一次RAM或一次工艺/库的每一个副本?如果它们被存储在一个阵列像 静态常量char * const的为foo [] = {“酒吧”,“巴兹”,“BUZ”}; 请问静态所有改变存储器的行为? 编辑:既然是可能的平台特定的,什么是对微软的编译器在Windows或GCC在Linux(X86)的行为 解决方案 假设你 ..
发布时间:2016-08-24 15:25:51 C/C++