Un-preprocessing: Extended CPP that works with your tools
标题中提到的“Un-preprocessing: Extended CPP that works with your tools”,我们可以从以下几个方面来解析相关知识点: 1. C预处理器(C Preprocessor,简称CPP)是C、C++以及Objective-C编程语言标准的一部分。由于它们广泛地应用于各种程序设计语言中,因此预处理器在处理宏定义、文件包含等预编译指令上扮演了重要角色。 2. 传统预处理工具无法直接处理预处理器指令,或者在处理源代码时可能无法保持原有的代码风格,这导致了程序修改工具(如bug修复工具、程序迁移工具等)在面对这些预处理指令时要么无法产生准确的结果,要么完全放弃处理预处理代码,仅处理预处理后的代码。 3. 研究者们提出了一个轻量级的解决方案,即通过一个双向C预处理器系统,该系统能够自动将预处理代码的变更传播回未经预处理的源代码。这样,程序修改工具只需专注于预处理后的代码,而双向C预处理器则负责保证最终生成的源代码的正确性,并尽可能保持与原始代码的一致性。 4. 研究者们已经将提出的这种方法应用于Linux内核,并用一系列生成的变更进行了评估。评估结果证明了这种方案的可行性和有效性。 5. 在引入预处理概念时,需要理解的是,预处理器的工作是在实际的编译过程之前对源代码进行处理。它操作的是标记化(tokenized)的源代码,而还没有进行任何解析。这个特性使得预处理器并不局限于特定的语法,能够在多种编程语言中作为通用工具来使用。 6. 例如,C预处理器被用作HTML编写工具,它能够通过宏定义来捕获共享代码片段。 7. 本文提出的“un-preprocessing”技术是为了让现有的程序修改工具能够利用C预处理器的优势而无需对这些工具本身做任何修改。实现这一目标的关键在于,双向C预处理器能够有效地将对预处理代码的修改应用到源代码上,确保修改后的源代码既正确又尽可能地保持原有代码的风貌。 8. 由于技术限制,扫描文档时可能会产生识别错误或遗漏。因此,在理解提供的部分文字内容时,需要结合上下文进行合理的推测和修正,以确保信息的通顺和准确。 综合上述知识点,我们可以看到,论文提出的方法既解决了现有程序修改工具在处理预处理代码时的局限性问题,也提供了一种保持代码风格一致性的同时,允许程序修改工具更有效地进行工作的途径。这对于编译器设计者、程序修改工具开发者以及一般软件工程师来说,都是非常有价值的参考信息。
- 粉丝: 11
- 资源: 903
- 我的内容管理 展开
- 我的资源 快来上传第一个资源
- 我的收益 登录查看自己的收益
- 我的积分 登录查看自己的积分
- 我的C币 登录后查看C币余额
- 我的收藏
- 我的下载
- 下载帮助