Tag: 编译器构造

为什么这个(null ||!TryParse)条件导致“使用未分配的局部variables”?

以下代码导致使用未分配的局部variables“numberOfGroups” : int numberOfGroups; if(options.NumberOfGroups == null || !int.TryParse(options.NumberOfGroups, out numberOfGroups)) { numberOfGroups = 10; } 但是,这段代码工作正常(虽然, ReSharper说= 10是多余的): int numberOfGroups = 10; if(options.NumberOfGroups == null || !int.TryParse(options.NumberOfGroups, out numberOfGroups)) { numberOfGroups = 10; } 我错过了什么,或者编译器不喜欢我的|| ? 我已经缩小到dynamic导致的问题( options是我上面的代码中的一个dynamicvariables)。 问题仍然存在, 为什么我不能这样做 ? 这段代码不能编译: internal class Program { #region Static Methods private static void Main(string[] args) […]

C编译器的Windows?

我很好,在Linux上使用gcc作为我的C编译器,但想要一个Windows解决scheme。 有任何想法吗? 我从Bloodshhed看Dev-C ++,但是寻找更多的select。

为什么这个Java代码编译?

在方法或类范围内,下面的代码编译(带警告): int x = x = 1; 在类范围中, variables获取其默认值时 ,以下给出“未定义的引用”错误: int x = x + 1; 是不是第一个x = x = 1应该以相同的“未定义参考”错误? 或者也许第二行int x = x + 1应该编译? 或者有什么我失踪?

为什么不可能build立一个编译器来确定一个C ++函数是否会改变一个特定variables的值?

我在一本书中读到这一行: build立一个能真正确定C ++函数是否会改变特定variables的值的编译器是不可能的。 这个段落是为了说明为什么编译器在检查一致性时是保守的。 为什么不可能build立这样的编译器? 编译器总是可以检查variables是否被重新分配,非const函数被调用,还是作为非const参数被传入…

错误:可写primefaces属性无法将合成的setter / getter与用户定义的setter / getter配对

我最近试图编译一个旧的Xcode项目(用于编译就好了),现在我看到很多这种forms的错误: error: writable atomic property 'someProperty' cannot pair a synthesized setter/getter with a user defined setter/getter 导致这些错误的代码模式总是如下所示: // Interface: @property (retain) NSObject * someProperty; // Implementation: @synthesize someProperty; // to provide the getter – (void)setSomeProperty:(NSObject *)newValue { //.. } 我可以看到为什么错误正在生成。 我告诉编译器综合我的属性访问器(getter和setter),然后立即手动覆盖setter。 该代码总是闻到一点点。 那么,这样做的正确方法是什么? 如果我使用@dynamic而不是@synthesize ,那么我也必须写getter。 这是唯一的方法吗?

-ObjC链接器标志是做什么的?

简单的问题。 可能之前已经回答,但无法得到确切的答案。 现在,我有一个应用程序,可以使用和不使用链接器标志。 但是,如果没有链接器标志,在将数据添加到视图时会出现非常不同的行为。 多谢你们!

切换if-else语句的优点

使用switch语句的最佳做法是使用30个unsigned枚举的if语句,其中大约10个具有预期的操作(目前是相同的操作)。 性能和空间需要考虑,但并不重要。 我已经抽象了这个片段,所以不要因为命名惯例而恨我。 switch语句: // numError is an error enumeration type, with 0 being the non-error case // fire_special_event() is a stub method for the shared processing switch (numError) { case ERROR_01 : // intentional fall-through case ERROR_07 : // intentional fall-through case ERROR_0A : // intentional fall-through case ERROR_10 : // intentional fall-through case […]

第一个编译器是如何编写的?

我听说过鸡和鸡蛋,并引导。 我有几个问题。 什么编写了第一个编译器将某些东西转换成二进制指令 汇编是编译还是翻译成二进制指令? 我很难相信他们用二进制编写了一个编译器。

如何引导gcc / g ++?

这一直在困扰我一段时间。 gcc / g ++如何编译自己? 我猜测每一个版本都会被编译成一个以前的版本。 这是真的? 如果是这样,这是否意味着最古老的g ++ / gcc版本是用汇编编写的?

将#if释放工作像#if DEBUG在C#中的工作?

在所有我见过的#if编译器指令的例子中,他们使用“DEBUG”。 我是否可以使用“RELEASE”以相同的方式排除在debugging模式下编译时不想运行的代码? 我想用这个块包围的代码发出一堆电子邮件,而且我不想在testing时意外地发送这些邮件。