程序环境和预处理
1.在ANSI C的任何一种实现中,存在两个不同的环境。第1种是翻译环境,在这个环境中源代码被转换为可执行的机器指令。第2种是执行环境,它用于实际执行代码。翻译环境每个源文件进行单独编译,形成一个目标文件。2.linux部分命令ls//列出目录mkdir // 创建文件夹cd//改变目录touch //创建空文件ifconfig //查ip地
1.
在ANSI C的任何一种实现中,存在两个不同的环境。
第1种是翻译环境,在这个环境中源代码被转换为可执行的机器指令。
第2种是执行环境,它用于实际执行代码。
翻译环境
每个源文件进行单独编译,形成一个目标文件。
2.
linux部分命令
ls //列出目录
ls -s //打印文件大小
ls -R //将目录所有的子目录的文件列出,相当于递归
ls -a //显示出所有文件
ls -l //显示出每一个文件的详细信息(时间,名称,文件权限,链接等)
ls -lt //在目录中列出文件并对最后修改日期和时间进行排排序
ls -ltr // 基于时间和日期进行逆向排序文件
mkdir // 创建文件夹
cd //改变目录
touch //创建空文件
ifconfig //查ip地址
pwd //打印当前目录
rm - r //递归删除
rm - f //删除文件名
vim //编辑器
rm-f * //删除所有
3.linux环境下写代码
vim test.c //打开vim
i //插入
esc //保存
shift :wq //写并退出
gcc test.c //编译
./a.out //当前目录下的a.out
补充vim三种模式:普通模式,插入模式,命令行模式
源文件执行整个过程:
预处理阶段:
编译阶段:
汇编阶段:
运行环境
程序执行的过程:
1 . 程序必须载入内存中。在有操作系统的环境中:一般这个由操作系统完成。在独立
的环境中,程序的载入必须由手工安排,也可能是通过可执行代码置入只读内存来
完成。
2 . 程序的执行便开始。接着便调用main函数。
3 . 开始执行程序代码。这个时候程序将使用一个运行时堆栈(stack),存储函数的
局部变量和返回地址。程序同时也可以使用静态(static)内存,存储于静态内存
中的变量在程序的整个执行过程一直保留他们的值。
4 . 终止程序。正常终止main函数;也有可能是意外终止。
预处理
预定义符号
_FILE_ //进行编译的源文件
_LINE_ //文件当前的行号
_DATE_ //文件被编译的日期
_TIME_ //文件被编译的时间
_STDC_ //如果编译器遵循ANSI C,其值为1,否则未定义
例子:
#include <stdio.h>
int main()
{
printf("file:%s\n", __FILE__);
printf("line:%d\n",__LINE__);
printf("date:%s\n",__DATE__);
return 0;
}
#define
宏定义的便利之处:
#include <stdio.h>
#define CLEARBUF {\
int tmp = 0;\
while((tmp=getchar())!='\n' && (tmp!=EOF))\
{\
;\
}\
}
int main()
{
char arr[10];
int ch = 0;
CLEARBUF //清空缓冲区
ch = getchar();
printf("hello:%c\n",ch);
return 0;
}
#define定义的部分可换做fflush(stdin)//清空缓冲区
补充:1.#define 宏定义时换行要加’ \’,否则报错,很难找到错哦!
2.#define 定义时尽量不要加分号,有可能·会出错。
#define MAX 1000;
int main()
{
int a = MAX;
int b = 20;
int c = a+b;
printf("c=%d\n",c);
return 0;
}
编译出错,多加了一个分号
好了,今天就写这么多喽!哈哈,如有不足,请多多指教哦!!
开放原子开发者工作坊旨在鼓励更多人参与开源活动,与志同道合的开发者们相互交流开发经验、分享开发心得、获取前沿技术趋势。工作坊有多种形式的开发者活动,如meetup、训练营等,主打技术交流,干货满满,真诚地邀请各位开发者共同参与!
更多推荐
所有评论(0)