目录
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 使用标准化方法,向编译器发布特殊的命令到编译中 #if defined 判断宏是否已被定义,如果定义返回真 #if !define 判断宏是否已被定义,如果未定义返回真
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;
}
预定义符号添加
__FUNCTION__ 程序预编译时预编译器用的函数名
版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 举报,一经查实,本站将立刻删除。
文章由极客之音整理,本文链接:https://www.bmabk.com/index.php/post/119600.html