预处理的干货_预处理方法

预处理的干货_预处理方法

编码文章call10242025-02-06 11:02:4974A+A-


预处理本质不是编译,编译型语言为了提前做文本替换、条件编译。更高级编程语言一般不需要预处理,而是引入形如using/import代表依赖的模块,编译器会自动检查代码调用的接口与引入模块的匹配。


预处理的位置

  • 预处理可以在代码的任意位置,只要不在字符串””以内。

头文件包含

  • 典型代表是C/C++ #include, 仅仅是文件内容插入,ObjC用#import改进#include, 可自动判断是否有重复包含。
    • 更多参考:头文件包含


  • 汇编语言就有macro的概念。和头文件包含相同之处是文本替换,不过就是文本替换。
  • Pascal用BEGIN和END作为函数的开始和结束,C语言可以把BEGIN和END分别#define成{和},看起来就像是Pascal代码。
  • 内核代码一般会大量使用宏,为支援高效、可适配的代码。


条件编译

  • C语言虽然说平台无关,但不同平台架构差异需要用不同条件编译。
  • ifdef在20世纪70年代就存在,#if defined是80年代C标准化过程中加进来,后者可支持超过一个宏定义判断,自由度更高。早期的C语言是不支持嵌套包含同一个头文件的,后来引入了#ifndef/#define/#endif做去重处理。
  • C#确实很调皮,即使定位是跨平台中间件编程语言,依然可以用宏。但有很大约束,#define只能放在文件最开头,没有#ifdef, 只有#if.
  • 宏和函数可以同名,为了避免误用到宏,#undef可以去掉宏定义。


预处理器

  • C语言预处理器被称为cpp.









若文章对您有帮助,欢迎关注 程序员小迷 。助您在编程路上越走越好!

微风不燥,阳光正好,你就像风一样经过这里,愿你停留的片刻温暖舒心。

我是 程序员小迷 (致力于C、C++、C#、Android、iOS、Java、Kotlin、Objective-C、Swift、Shell、JavaScript、TypeScript、Python等编程技术的技巧经验分享),若作品对您有帮助,请关注、分享、点赞、收藏、在看、喜欢,您的支持是我们为您提供帮助的最大动力。

点击这里复制本文地址 以上内容由文彬编程网整理呈现,请务必在转载分享时注明本文地址!如对内容有疑问,请联系我们,谢谢!
qrcode

文彬编程网 © All Rights Reserved.  蜀ICP备2024111239号-4