贵州省住房和城乡建设厅网网站首页天津票网网站
- 作者: 五速梦信息网
- 时间: 2026年04月20日 11:03
当前位置: 首页 > news >正文
贵州省住房和城乡建设厅网网站首页,天津票网网站,企业邮箱怎么注册的,2022最新新闻6、shell中的语句 6.3、结构性语句 6.3.1、if if…then…fi 1、结构 1#xff09;基本结构 if 表达式 then 命令表 fi if [ 表达式 ] // 【】两侧有空格 then 命令表 fi 2#xff09;分层结构 if 表达式 then 命令表1 else 命令表2 fi 3#xff09;嵌套结构 if …6、shell中的语句 6.3、结构性语句 6.3.1、if if…then…fi 1、结构 1基本结构 if 表达式 then 命令表 fi if [ 表达式 ] // 【】两侧有空格 then 命令表 fi 2分层结构 if 表达式 then 命令表1 else 命令表2 fi 3嵌套结构 if 表达式 then if then 命令表1 else 命令表2 fi else if then 命令表3 else 命令表4 fi fi 4elif if 表达式1 then 命令表1 elif 表达式 then 命令表2 …… else 命令表n fi 6.3.2、case语句 结构 case 变量 in // 取值后面必须为关键字 in,取值可以为变量或者常量 模式1) // 每个模式必须以右括号结束 命令表1 // 一旦模式匹配其间所有命令开始执行直到 ;; 结束 ;; // 执行完匹配模式相应命令后不hi再继续匹配其他格式 模式2) // 取值检测匹配的每一个模式 命令表2 ;; … *) // 如果没有模式匹配成功使用 * 捕获该变量 命令表 n ;; esac 6.3.3、for循环 结构 for 变量名 in 单词表 // 变量依次取单词表中的各单词 do // 每取一次单词就执行循环体中的命令 命令表 // 可以是一条也可以是换行符分开的多条 done // 循环次数由单词表中的单词数确定 书写格式 1变量 I 从单词表中取值 2变量I 从命令行取值省略 in 和单词表 3变量i在单词表内通过通配符取值 4书写格式类似C语言 // 两个空格里的表达式两端用空格与括号隔开 5输出当前目录下的所有文件名字 6.3.4、while循环 结构 while 命令表达式 // 首先测试其后的命令或表达式的值 do // 为真进入循环 命令表 done // 为假退出循环 6.3.5、循环控制语句 break break // 结束本层循环 break n // 结束 n 层循环内层往外数 n 层都结束 continue continue // 跳过本层本次循环 continue n // 跳过 n 层本次循环内层往外数 n 层这 n 层本次循环都跳过 7、分文件 整个工程包含多个.c和多个.h文件 7.1、分文件包括 1、main.c main() // 这些文件统一由 main 函数调用 2、xxx.c 多个.c // 不同功能的函数接口 3、.h 头文件包含 1、包含其他的头文件 2、函数声明 3、构造数据类型可以定义类型之后定义变量但是不能同时定义 4、宏定义 5、重定义的名字 6、全局变量 7.2、分文件使用 include 引用时 “ ” 和 的区别 stdio.h // 系统定义的头文件去系统目录下查找头文件 “add.h” // 自定义头文件先从当下目录下查找如果没有再去系统目录下查找头文件 7.3、条件编译 编译器根据条件的真假决定是否编译相关代码 1、根据宏是否定义 格式 #ifdef 宏名 代码块1 // 宏定义代码块1被编译 #else 代码块2 // 宏没有被定义代码块2被编译 #endif #include stdio.h #define EDFint main(int argc, char const *argv[]) {#ifdef EDFprintf(yes\n);#elseprintf(NO\n);#endifreturn 0; }2、根据宏的值是否为真 格式 #if 宏名 代码块1 // 宏的值为真非0代码块1被编译 #else 代码块2 // 宏的值为假0代码块2被编译 #endif #include stdio.h #define EDF 1int main(int argc, char const *argv[]) {#if EDFprintf(yes\n);#elseprintf(NO\n);#endifreturn 0; }3、根据宏是否定义 防止头文件重复包含 结构 #ifndef 宏名 // 第一次展开询问是否有宏没有编译下列代码块 // 第二次展开询问是否有宏第一次展开的时候定义了宏 所以这一次有有宏下面的代码块不进行编译 #define 宏名 // 定义一个同名宏然后继续执行后面的代码块 …… #endif 8、make工具 8.0、gcc 编译步骤 预处理 处理以#开头的内容展开头文件替换宏定义删除注释不进行语法检查 gcc -E xxx.c -o xxx.i 编译 检查语法错误有错报错没错生成汇编文件 gcc -S xxx.i -o xxx.s 汇编 生成不可执行的二进制文件 gcc -c xxx.s -o xxx.o 链接 链接库文件生成可执行的二进制文件 gcc xxx.o -o xxx 8.1、make工具的内容 1、make工具又叫工程管理器作用是在文件过多时管理文件 // 能根据文件时间戳发现更新过的文件而减少编译工作量的同时它通过读入文件的内容来执行大量的编译工作 2、Makefile 是 make 读入的唯一配置文件 // Makefile 工程文本文件 8.2、Makefile 书写格式 8.2.1、基础书写方式 目标(可执行文件): 依赖文件(二进制文件) tab命令 // gcc xxx.o -o xxx 目标(二进制文件): 依赖文件(.c文件) tab命令 // gcc -c xxx.c -o xxx.o .PHONY: clean // 目的不是创建clean文件而是执行下列命令 目标(clean): // 删除 .o 文件和可执行文件 tab伪命令 // rm -rf *.o main 示例写一个makefile文件 main: main.o fun.o gcc main.o fun.o -o main main.o: main.c gcc -c main.c -o main.o fun.o: fun.c gcc -c fun.c -o fun.o .PHONY: clean clean: rm -rf *.o main 执行 make // 执行前面的编译过程 make clean // 执行删除命令 8.2.2引入自定义变量和预定义变量 通过定义变量来重新书写makefile文件 自定义变量 一般用大写表示变量名取变量值用\((变量名) // 递归赋值以最后一次赋值为准找到最后一次赋值之后前面所有该变量全都变成最后一次赋值的值 : // 立即赋值当前是什么就立即是什么值以当前值为准直接确定 // 追加赋值追加新的值以字符串的形式追加追加前自动增加分隔符 ? // 条件赋值判断之前是否定义如果定义不重新赋值否则赋值前面有值了就保持前面没有值就赋值 预定义变量 系统预先定义好的一些变量可能有默认值可能没有 RM // 文件删除程序的名称默认值为rm -f CC // C编译器的名称默认值是cc CPP // C预编译器的名称默认值是\)(CC) -E CFLAGS // C编译器的选项无默认值 // -g 调试 -Wall 加警告 OBJS // 生成的二进制文件或者目标文件自己定义的 makefile文件书写方式2 EXEmain # 保存可执行文件 OBJSmain.o fun.o CCgcc CFLAGS-c -g -Wall # -g 调试 -Wall警告 \((EXE): \)(OBJS) \((CC) \)(CFLAGS) -o \((EXE) main.o: main.c \)(CC) \((CFLAGS) main.c -o main.o fun.o: fun.c \)(CC) \((CFLAGS) fun.c -o fun.o .PHONY: clean clean: \)(RM) \((OBJS) \)(EXE) 8.2.3、引入自动变量和通配符修改makefile 自动变量 \( // 第一个依赖文件 \) // 目标文件的完整名称 \(^ // 所有不重复的依赖文件以空格分开 通配符 % // 字符串的匹配模式在Makefile中作用是获取一个.o 文件然后匹配一个同名.c // %.o: %.c makefile文件书写方式3 EXEmain # 保存可执行文件 OBJSmain.o fun.o CCgcc CFLAGS-c -g -Wall # -g调试 -Wall:警告 \)(EXE): \((OBJS) \)(CC) \(^ -o \) %.o: %.c \((CC) \)(CFLAGS) \( -o \) .PHONY: clean clean: \((RM) \)(OBJS) \((EXE) 8.2.4、引入函数 1、要求 make 中提供了内置函数 // 内置函数是帮助程序员查找文件信息的所以要求在查找目录下只有程序需要的 .c 文件没有其他程序的 .c 文件 2、wildcard 功能 根据给的条件获取指定的文件名找文件 命令 \)(wildcard 指定字符串的格式) \((wildcard *.c) // 找到当前路径下所有的 .c 文件的文件名 3、patsubst 功能 模式匹配替换字符串 命令 \)(patsubst 原格式,目标格式,要替换的字符串) \((patsubst %.c,%.o,main.c fun.c) // 获取到main.c fun.c 字符串根据模式匹配得到main.o fun.o 字符串每个参数之间以‘’作为分隔要替换的字符串之间以空格作为分隔 makefile文件书写方式4 EXEmain # 保存可执行文件 FILES\)(wildcard *.c) OBJS\((patsubst %.c,%.o,\)(FILES)) CCgcc CFLAGS-c -g -Wall # -g调试 -Wall:警告 \((EXE): \)(OBJS) \((CC) \)^ -o \( %.o: %.c \)(CC) \((CFLAGS) \) -o \( .PHONY: clean clean: \)(RM) \((OBJS) \)(EXE)
相关文章
-
贵州省住房和城乡建设部网站首页外贸管理软件
贵州省住房和城乡建设部网站首页外贸管理软件
- 技术栈
- 2026年04月20日
-
贵州省住房城乡建设网站wordpress注册邮箱收不到验证码
贵州省住房城乡建设网站wordpress注册邮箱收不到验证码
- 技术栈
- 2026年04月20日
-
贵州省网站备案温州市网站建设公司
贵州省网站备案温州市网站建设公司
- 技术栈
- 2026年04月20日
-
贵州省住房及城乡建设部网站国内做外卖的网站有哪些
贵州省住房及城乡建设部网站国内做外卖的网站有哪些
- 技术栈
- 2026年04月20日
-
贵州省住房建设部网站中国手机网站
贵州省住房建设部网站中国手机网站
- 技术栈
- 2026年04月20日
-
贵州网站seo河北省建设项目信息网站
贵州网站seo河北省建设项目信息网站
- 技术栈
- 2026年04月20日
