Tag: 编译器构造

未使用的function是否被优化了?

一个相当简单的问题…这些日子的编译器往往做了大量的优化。 他们是否也从最终输出中删除未使用的function?

C编译器断言 – 如何实现?

我想实现一个“断言”,防止编译,而不是在运行时,在错误情况下失败。 我现在有一个这样的定义,这很好,但增加了二进制文件的大小。 #define MY_COMPILER_ASSERT(EXPRESSION) switch (0) {case 0: case (EXPRESSION):;} 示例代码(无法编译)。 #define DEFINE_A 1 #define DEFINE_B 1 MY_COMPILER_ASSERT(DEFINE_A == DEFINE_B); 我怎样才能实现这个,以便它不生成任何代码(为了最小化生成的二进制文件的大小)?

recursion函数可以内联吗?

inline int factorial(int n) { if(!n) return 1; else return n*factorial(n-1); } 正如我正在读这个 ,发现上面的代码将导致“无限编译”,如果不正确的编译器处理。 编译器如何决定是否内联一个函数?

检测CPU架构的编译时间

编译C或C ++代码时,找出CPU架构的最可靠方法是什么? 据我所知,不同的编译器有自己的一套非标准的预处理器定义(MSVS中的__i386__ ,GCC中的__i386__ , __arm__等)。 有没有一种标准的方法来检测我正在构build的架构? 如果没有,是否有各种编译器的这种定义的综合列表的来源,例如所有样板#ifdef的标题?

C / C ++编译器的最佳编译器警告级别?

你对不同的C / C ++编译器推荐什么编译器警告级别? 海湾合作委员会和G + +会让你逃脱了很多在默认的水平。 我觉得对我来说最好的警告级别是“墙”。 而且我总是尝试删除修复它生成的警告的代码。 (甚至愚蠢的使用括号的逻辑优先规则或说我真的是指“if(x = y)”) 对于不同的编译器,你最喜欢的级别是什么?例如Sun CC,aCC(HPUX?),Visual Studio,intel? 编辑: 我只想指出,我不使用gcc / g ++中的“-Werror”(但是我明白它是实用的),因为我使用: #警告“这是对自己的一个说明” 在我的代码中的一些地方。 所有编译器都理解#warningmacros吗?

学习parsing器,解释器和编译器资源

我一直想玩一段时间写自己的语言(表面上是为了学习经验),因此需要相对build立parsing器,解释器和编译器。 所以: 有没有人知道构buildparsing器,解释器和编译器有什么好的资源? 编辑:我不在寻找编译器/编译器/parsing器编译器,如Lex,Yacc和野牛…

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

最近我在C#解决scheme遇到以下exception: 错误2无法加载文件或程序集“Newtonsoft.Json,Version = 3.5.0.0,Culture = neutral,PublicKeyToken = b9a188c8922137c6”或其依赖项之一。 该参数不正确。 (从HRESULTexception:0x80070057(E_INVALIDARG)) 这不取决于我的代码或程序集的名称(如在这种情况下, Newtonsoft.Json )。 当我从解决scheme中删除这个dll时,编译器会告诉另一个exception。 所以我想应该关掉/打开我的电脑:)

array = {0}如何将整个数组设置为0?

编译器如何填充char array[100] = {0}; ? 它背后的魔法是什么? 我想知道内部编译器如何初始化。

一个面向对象的编程语言的AST(抽象语法树)是什么样的?

我正在阅读关于AST(抽象语法树),但我看到的所有示例使用expression式,如: a + b * c 这可以用类似下面的语法来表示: (+ a (* bc) ) 这将相当于: + / \ a * / \ bc 我的问题是一个OOPL中类的AST如何? 我天真的尝试是这个Java代码: class Person { String name; int age; public String toString() { return "name"; } } 方法是: ;Hand written (classDeclaration Person (varDeclaration String name) (varDeclaration int age ) (funcDeclaration String toString (return "name") […]

编译,构build或存档问题与Xcode 4(和依赖项)

这个问题在过去的几个星期里已经有所发展,以涵盖xcode4的更多一般性问题(以及旧版xcode的升级项目)。 但是,许多问题可以通过遵循相同的指令来解决。 如果您遇到以下任何问题,请尝试接受的答案中的方法: Xcode 4无法存档应用程序 Xcode 4创build一个不可用的存档 Xcode 4不会创build一个.ipa 由于预处理器错误,Xcode 4无法编译 Xcode 4无法find标题 Xcode 4的代码完成不起作用 项目依赖不会编译 添加依赖会导致上述任何问题 原来的问题 标题: Xcode 4中的“词法或预处理器问题文件未find” 我有一个在Xcode 4中的项目,将build立罚款,并在设备和模拟器上运行,但是当试图存档错误时,查找与静态库相关的头文件: In file included from /Volumes/Development/Path/LBProject/LBProject/LBProject-Prefix.pch:15: In file included from /Volumes/Development/Path/LBProject/LBFDefines.h:23: In file included from /Volumes/Development/Path/LBProject/Classes/LBProjectAppDelegate.h:11: In file included from /Volumes/Development/Path/LBProject/LBProject/../FKNDirectory/FKNDirectoryManager.h:10: /Volumes/Development/Path/LBProject/LBProject/../FKNDirectory/FKNDataModel.h:11:9: fatal error: 'Merchant.h' file not found [1] #import "Merchant.h" ^ 1 […]