UCday01

ctrl - 缩小字体, ctrl + 增大字体

java oracle, oc apple, c# microsoft,C 和 C++,不属于任何公司

3.课程的简介

3.1 课程阶段的简介

Unix/linux系统的基础

=> 主要学习常用的基本命令以及vi编译器的使用

=> 依赖于Unix/linux系统,部分命令和windows相同

标准C语言的语法

=> 主要学习C语言的基本语法

=> 不依赖于具体的操作系统,支持Unix/linux/windows

数据结构和算法

=> 主要学习常用数据结构的特性以及算法的思想

=> 不依赖于具体的编程语言,支持C/C++/...

=> 不依赖于具体的操作系统,支持Unix/linux/windows

Unix/linux系统下的高级C编程

=> 主要学习常用的API函数以及系统原理

(Application Programming Interface)

=> 依赖于具体的操作系统,支持Unix/linux

=> 依赖于具体的编程语言,支持C语言的语法

=> 课程理论时间: 15天左右

目前主流的主机操作系统:Unix/linux/windows系列

windows系列:xp/vista/win7/win8/win8.1/win10

目前主流的移动终端操作系统:android/ios/windows

3.2 uc课程内容的简介

(1)Unix/linux系统的概述以及编程基础;

(2)Unix/linux系统下的内存管理技术;

(3)Unix/linux系统下的文件管理以及目录操作;

(4)Unix/linux系统下的进程管理技术;

(5)Unix/linux系统下的信号处理技术;

(6)Unix/linux系统下的进程间通信技术;

(7)Unix/linux系统下的网络编程技术;

(8)Unix/linux系统下的多线程开发技术;

------------------------------------------------

今天内容:

(1)Unix/linux系统的简介

(2)gcc编译器的使用

(3)多文件结构的编程

(4)常用的预处理指令

(5)环境变量的概念和使用

1.Unix/linux系统的简介

1.1 Unix系统的简介

在1969年,编写操作系统使用的是汇编语言,无论是编写还是维护都非常不方便,贝尔实验室中的肯-汤普逊研发了一门语言叫做B语言,贝尔实验室中的丹尼斯-里奇在B语言的基础上做了修改和扩展,叫做New B语言,后来改名为C语言;

C语言诞生于1972年,在编程语言排行榜占据重要地址

Unix系统诞生于1970年,具有支持多用户、多任务以及多种处理器的特点;

1.2 linux系统的简介

linux系统是一款自由免费开放源代码的类Unix系统;

当前教学环境: Ubuntu12.04版本,是32位的操作系统

www.ubuntu.com

每半年发布一个新版本:4月  10月

2.gcc编译器的使用

2.1 基本概念

gcc原名叫做GNU C Compiler(编译器),支持对C语言的编译,后来对gcc做了扩展,支持了C++/Object-c等语言,于是改名为GNU Compiler Collection(集合);

GNU => GNU is not Unix;

2.2 基本功能(重点)

目前主流的编程都使用高级语言(C、C++等),高级语言编写的代码无法被计算机执行,需要翻译成机器能执行的机器指令,而gcc主要用于将高级源代码文件翻译成最终的可执行文件;

使用gcc编译器从高级源代码文件到最终可执行文件的构建过程主要包含以下4步:

(1)预处理/预编译

- 主要用于实现头文件的扩展以及宏替换等;

(2)编译

- 主要用于实现从高级源代码到汇编语言的翻译;

(3)汇编

- 主要用于实现从汇编语言到机器指令的翻译;

(4)链接

- 主要用于实现目标文件和库文件的链接;

练习:

cc -E 01hello.c -o 01hello.i

cc -S 01hello.i/01hello.c

cc -c 01hello.s/01hello.i/01hello.c

cc 01hello.o/01hello.s/01hello.i/01hello.c

2.3 常用的编译选项

(1)要求掌握的选项

gcc/cc -E

=> 预处理,默认输出到屏幕,用-o来指定输出文件名

gcc/cc -S

=> 编译,将高级源代码翻译成汇编语言文件

gcc/cc -c

=> 汇编,将汇编语言文件翻译成机器指令文件

gcc/cc -o

=> 主要用于指定输出文件名

gcc/cc xxx.c

=> 主要用于编译链接生成可执行文件a.out

(2)要求熟悉的选项

gcc/cc -std

=> 主要用于指定具体的C标准(C89 C99)

gcc/cc -v

=> 主要用于查看gcc的版本信息

gcc/cc -Wall(Warning all)

=> 主要用于尽可能显示所有的警告信息

gcc/cc -Werror

=> 主要用于将警告信息当作错误来处理

(3)要求了解的选项

gcc/cc -g

=> 主要用于生成gdb相关的调试信息

gcc/cc -x

=> 主要用于指定源代码的编程语言

gcc/cc -O

=> 主要用于进行优化处理

(4)扩展的选项

man gcc/cc  表示查看gcc编译器的相关信息

man 命令/函数名 表示查看命令/函数的相关信息

作业:安装英文词典 - 星际译王

2.4 编程相关的常用文件后缀

.h - 头文件      .c - 源文件

.i - 预处理文件  .s - 汇编文件

.o - 目标文件

.a - 静态库文件  .so - 共享库文件

3.多文件结构的编程

3.1 多文件结构的主要组成

.h - 头文件,主要存放函数声明等

.c - 源文件,主要存放函数定义等

.a - 静态库文件,主要实现对功能模块的打包

.so - 共享库文件,主要实现对功能模块的打包

3.2 头文件的详细组成(重中之重)

(1)头文件卫士

#ifndef ...

#define ...

#endif

(2)包含其他头文件

#include

...

(3)进行宏定义

#define PI 3.14

...

(4)结构体的定义以及对数据类型起别名

struct node

{

int data;

struct node* next;

};

typedef struct node Node;

(5)外部变量/函数的声明

extern int num;

void show(void);

练习:

mkdir circle 表示创建circle目录,在circle目录内部编写以下三个文件:

vi circle.h - 声明一个计算圆形周长 和 一个计算圆形面积的函数(circle_length  和 circle_area);

vi circle.c - 实现头文件中两个函数的定义;

vi main.c - 要求用户输入一个半径,调用上述两个函数计算,并打印最终的结果;

扩展:

vi ~/.vimrc文件,编写以下4行指令:

set nu 表示显示行号

set cindent 表示自动缩进

set shiftwidth=4 表示自动缩进大小为4个空格

set tabstop=4 表示设置tab键大小为4个空格

练习:

mkdir add,在add目录中编写以下3个文件:

add.h - 声明一个计算两个int类型参数和并返回的函数,函数名为add_int;

add.c - 实现上述函数的定义;

main.c - 编写main函数,调用上述函数,参数可以任意指定,并将最终的计算结果打印出来;

最后编写Makefile文件;

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 194,390评论 5 459
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 81,821评论 2 371
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 141,632评论 0 319
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 52,170评论 1 263
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 61,033评论 4 355
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 46,098评论 1 272
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 36,511评论 3 381
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 35,204评论 0 253
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 39,479评论 1 290
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 34,572评论 2 309
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 36,341评论 1 326
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 32,213评论 3 312
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 37,576评论 3 298
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 28,893评论 0 17
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 30,171评论 1 250
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 41,486评论 2 341
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 40,676评论 2 335

推荐阅读更多精彩内容