解释器、预处理、main函数

解释器

解释器覆盖范围很广,不管是解释语言的运行时解释翻译器,还是操作系统自带脚本的解释器。

Windows宿主脚本

  • Windows提供wscript和cscript, 前者用于图形化展示,后者用于命令行模式。

预处理

预处理本质不是编译,编译型语言为了提前做文本替换、条件编译。更高级编程语言一般不需要预处理,而是引入形如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.

main函数

基本每种编译型语言都有一个主入口,又被称为main函数。不同语言main名称可能有不同,C#用Main函数。另外,有的语言编译器也可以指定入口位置,完全不用遵循main.

脚本语言的入口

  • 脚本语言被简单解释执行,一般顺序执行,没有入口一说。Python特别提供__main__指定入口。

main真的是入口吗?

  • 从操作系统和库的角度,main函数并不是程序或进程的第一入口,算是回调到程序员源代码的入口。程序员看到main,代表执行到写的代码的入口,其实操作系统和库早已为程序运行准备了,它们的入口隐藏在main上级。

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

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

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

相关推荐
故事和你918 小时前
洛谷-数据结构1-1-线性表1
开发语言·数据结构·c++·算法·leetcode·动态规划·图论
脱氧核糖核酸__8 小时前
LeetCode热题100——53.最大子数组和(题解+答案+要点)
数据结构·c++·算法·leetcode
小李子呢02119 小时前
前端八股Vue---Vue2和Vue3的区别,set up的用法
前端·javascript·vue.js
脱氧核糖核酸__9 小时前
LeetCode 热题100——42.接雨水(题目+题解+答案)
数据结构·c++·算法·leetcode
石榴树下的七彩鱼9 小时前
图片修复 API 接入实战:网站如何自动去除图片水印(Python / PHP / C# 示例)
图像处理·后端·python·c#·php·api·图片去水印
邂逅星河浪漫9 小时前
【银行内网开发-管理端】Vue管理端+Auth后台开发+Nginx配置+Linux部署(详细解析)
linux·javascript·css·vue.js·nginx·html·前后端联调
一 乐9 小时前
电影院|基于springboot + vue电影院购票管理系统(源码+数据库+文档)
java·数据库·vue.js·spring boot·论文·毕设·电影院购票管理管理系统
星空椰9 小时前
JavaScript 进阶基础:函数、作用域与常用技巧总结
开发语言·前端·javascript
奔跑的呱呱牛9 小时前
@giszhc/vue-page-motion:Vue3 路由动画怎么做才“丝滑”?(附在线示例)
前端·javascript·vue.js
恼书:-(空寄9 小时前
JVM GC 日志分析 + 常见 GC 场景 + 实战参数调优
java·jvm