目录
1.程序的两种环境
在C语言的标准实现中,存在两个不同的环境
1)翻译环境,源代码被转换为可执行的机器指令。
2)执行环境,用于实际执行的代码。
2.编译+链接
2.1 翻译环境
2.2编译本身也分为几个阶段
2.3 运行环境
程序的执行过程
1.程序载入内存中。
(如果有操作系统的环境中:一般有操作系统完成;如果在独立环境中,程序载入由手工操作,也有可能是通过可执行代码置入只读内存来完成)
2.程序如果执行就开始。
(开始后就调用main函数)
3.开始执行程序代码。
(执行后程序将使用一个运行时的堆栈,存储函数的局部变量和返回地址。
程序同时也可以使用静态内存,存储于静态内存中变量在内存的整个执行过程一直保留值)
4.结束程序。
(正常结束main函数;也可能意外终止)
3.预处理
3.1 预处理指令
指令 描述 #define 定义宏 #include 包含一个源代码文件 #undef 取消已定义的宏 #ifdef 如果宏已经定义,则返回真 #ifndef 如果宏没有定义,则返回真 #if 如果给定条件为真,则编译下面代码 #else #if 的替代方案
#elif 如果前面的#if 给定条件为真,当前条件为真,则编译下面代码 #endif 结束一个#if ….#else 条件编译块
#error 当遇到标准错误时,输出错误信息 #pragma 使用标准化方法,向编译器发布特殊的命令到编译中
3.2 预定义符号
宏 描述 _FILE_ 进行编译的源文件 _LINE_ 文件当前的行号 _DATE_ 文件被编译的日期 _TIME_ 文件被编译的时间 _STDC_ 如果编译器遵循ANSI C,其值为1,否则未定义
下面来打印观察一下他们的内容
int main()
{
printf("%s\n",__FILE__);
printf("%d\n", __LINE__);
printf("%s\n", __DATE__);
printf("%s\n", __TIME__);
printf("%s\n", __FUNCTION__);
return 0;
}
版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 举报,一经查实,本站将立刻删除。
文章由极客之音整理,本文链接:https://www.bmabk.com/index.php/post/87398.html