Tag: 编译器构造

Android Studio错误的含义:未注释的参数将覆盖@NonNull参数

我正在尝试Android Studio。 在创build一个新项目并向创buildMyActivity类中添加默认的onSaveInstanceState方法时,当我尝试将代码提交给Git时,出现一个我不明白的奇怪错误。 代码是这样的: 我得到的错误是这样的: 如果我尝试将方法签名更改为protected void onSaveInstanceState(@NotNull Bundle outState) ,则IDE告诉我它无法parsing符号NotNull 。 我需要做些什么来摆脱警告?

C / C ++编译器警告:你清理所有的代码来删除它们或将它们留在?

我曾经在很多项目上工作过,在这些项目中,我被其他人的代码更新了。 更多的时候,我编译它,并得到大约1000多个编译器警告。 当我看到编译器的警告,他们让我感到肮脏,所以我的第一个任务是清理代码,并将其全部删除。 通常我会发现十几个像未初始化的variables这样的问题。 我不明白为什么人们把他们留在这里,没有任何警告,没有完整的编辑。 我错过了什么吗? 有没有任何理由让他们离开? 任何恐怖故事分享?

我写了一个程序,允许两个class级“打架”。 无论出于何种原因,C#总是赢。 VB.NET出了什么问题?

我写了一个程序,允许两个class级“打架”。 无论出于何种原因,C#总是赢。 VB.NET出了什么问题? static void Main(string[] args) { Player a = new A(); Player b = new B(); if (a.Power > b.Power) Console.WriteLine("C# won"); else if (a.Power < b.Power) Console.WriteLine("VB won"); else Console.WriteLine("Tie"); } 这里是玩家:C#中的玩家A: public class A : Player { private int desiredPower = 100; public override int GetPower { get { return desiredPower; […]

为什么在堆栈上分配这么多空间?

这个问题来自回答Stack Overflow问题为什么书上说“编译器为内存中的variables分配空间”? ,我试图向OP演示在堆栈中分配variables时会发生什么,以及编译器如何生成知道要分配的内存大小的代码。 显然,编译器分配的空间比需要的多得多。 但是,在编译以下时 #include <iostream> using namespace std; int main() { int foo; return 0; } 使用debugging模式编译的Visual C ++ 2012,您可以获得以下汇编程序输出,不会优化: int main() { 00A31CC0 push ebp 00A31CC1 mov ebp,esp 00A31CC3 sub esp,0CCh // Allocates 204 bytes here. 00A31CC9 push ebx 00A31CCA push esi 00A31CCB push edi 00A31CCC lea edi,[ebp-0CCh] 00A31CD2 mov ecx,33h 00A31CD7 […]

parsing树和AST有什么区别?

它们是由编译过程的不同阶段产生的吗? 或者他们只是同一个事物的不同名称?

在C本身编写的GCC C编译器?

在C本身编写的GCC C编译器? 还是写在大会? 如果编译器是用C编写的,那么编译器用来编译编译器代码是什么?

GCC和Clangparsing器是否真的是手写的?

看来GCC和LLVM-Clang使用手写recursion下降parsing器 ,而不是机器生成的,基于Bison-Flex的自底向上parsing。 请问有人可以证实这是事实吗? 如果是这样,为什么主stream编译器框架使用手写parsing器? 更新 : 这里有关这个话题的有趣的博客

为什么这个C ++程序非常快速?

我写了一个基准来比较Python,Ruby,JavaScript和C ++的不同解释器/编译器的性能。 正如所料,事实certificate,(优化后的)C ++击败了脚本语言,但是这样做的因素却非常高。 结果是: sven@jet:~/tmp/js$ time node bla.js # * JavaScript with node * 0 real 0m1.222s user 0m1.190s sys 0m0.015s sven@jet:~/tmp/js$ time ruby foo.rb # * Ruby * 0 real 0m52.428s user 0m52.395s sys 0m0.028s sven@jet:~/tmp/js$ time python blub.py # * Python with CPython * 0 real 1m16.480s user 1m16.371s sys 0m0.080s sven@jet:~/tmp/js$ […]

LR,SLR和LALRparsing器有什么区别?

LR,SLR和LALRparsing器的实际区别是什么? 我知道SLR和LALR是LRparsing器的types,但是就parsing表而言,实际的差异是什么? 以及如何显示语法是LR,SLR还是LALR? 对于LL语法,我们只需要显示parsing表中的任何单元格都不应包含多个生产规则。 任何类似LALR,SLR和LR的规则? 例如,我们如何显示语法 S –> Aa | bAc | dc | bda A –> d 是LALR(1)而不是SLR(1)? 编辑(ybungalobill) :我没有得到一个令人满意的答案是什么LALR和LR之间的差异。 所以LALR的表格尺寸较小,但它只能识别LR语法的一个子集。 请有人详细说明LALR和LR之间的区别吗? LALR(1)和LR(1)就足够答案。 他们两个使用1令牌前瞻,并都是表驱动! 他们有什么不同?

Eclipse:启用断言

我正在运行Eclipse伽利略。 如何在Eclipse中启用断言? 正如其他网站所build议的,我尝试添加参数: -ea 。 我也尝试将编译器合规性级别更改为1.4 。 这两个build议都没有奏效。