课堂笔记2

本文介绍Makefile的基础语法及应用、gdb调试工具的使用方法、Shell脚本的基本编写技巧等内容,帮助读者掌握这些常用工具的使用。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

一、Makefile

make命令执行时,需要一个Makefile文件,以告诉make命令需要怎样去编译和链接程序。

格式:target(目标):dependency(依赖)

                   (Tab字符)command(命令)

例:

hello:hello.c

      gcc hello.c -o hello

通过hello.o和print.o文件生成hello,使用变量方便编程。

Target = hello

Object = hello.o print.o

$(Target):$(Object)

    gcc $(Object) -o $(Target)

hello.o:hello.c

    gcc -c hello.c -o hello.o

print.o:print.c

    gcc -c print.c -o print.o

make只能编译最新文件:

make clean

.PHONY:clean     //声明clean为伪目标

clean:

    rm *.o hello

用gcc编译多个文件:gcc hello.c print.c -o hello

二、gdb调试工具

编译时使用gcc xx.c -o xx -g

gdb xx进入调试

(1)l+行号:显示从该行开始的十行

(2)加断点:b 行号或者 break 函数名

查看断点信息:info b  删除断点:delete b

(3)执行:run/r

(4)print x打印变量值

(5)continue继续向下执行

        return退出函数

       quit/q退出

(6)n/s:进入下一条语句。区别:n不进入函数,s进入函数

三、shell脚本

文件后缀为.sh

加固定格式头文件:#!/bin/bash 或者 #!/bin/sh

例:脚本输出helloworld、hello、参数

#!/bin/bash

Tmp="hello"

echo "helloworld"

echo ${Tmp}

echo "first $1"

echo "second $2"

echo "all $*"

echo "sum $#"

echo为输出命令,echo “hello”> xx     (>表示覆盖,>>表示追加)

脚本在执行前不需要编译为二进制文件,执行前需要用chmod修改权限,执行./xx.sh +参数1 参数2……

 $*:输出所有参数,$#:输出参数总数

脚本中注释用#

例:在脚本中利用循环创建目录、文件

#!/bin/bash

for dir in $1 $2 $3 $4               #循环固定格式

do

    mkdir $dir                            #创建目录

    cd $dir                                  #进入目录

    touch $dir                             #创建文件

    echo "hello $dir" > $dir        #在文件中写入hello xx

    cd ..                                       #返回上一层

done

判断是文件还是目录:

#!/bin/bash

PATH = $1               #$1路径在执行时写入

if [ -z $1 ]; then       #判断是否输入了命令行参数,exit退出整个脚本

 echo "ERROR"

 exit

fi

if [ -d $1 ]; then

 echo "DIR"

elif [ -f $1 ]; then

 echo "FILE"

fi

脚本中的选择 switch case

判断从键盘输入的是数字、小写字母、大写字母还是特殊字符:

#!/bin/bash

read key

case "${key}" in

[A-Z] ) echo "UpperLetter";;

[a-z] ) echo "LowerLetter";;

[0-9] ) echo "Number";;

* ) echo "ERROR";;

esac

需要修改export LANG=C,改变编码顺序。

在脚本中输出helloworld:

#!/bin/bash

file = "hello.c"

target = "hello"

echo "#include <stdio.h>" > $file

echo "int main()" >> $file

……

echo 'printf("helloworld\n")' >> $file

……

gcc $file -o $target

./$target

如果使用cat > $file << EOF,可以不使用echo

四、基本数据类型

常见数据类型占得字节数:int 4      short 2     long 4     char 1     float 4     double 8

unsigned int类型整数范围大于int类型,相同类型的数据才能进行运算。有符号整型和无符号整型运算,要将有符号类型用补码形式转化成无符号整型再进行运算。乘法要考虑越位问题。%u为无符号整型

const:修饰只读变量,加了const不能通过修改变量的值来改变变量内存的值。 %p打印地址(用十六进制表示)

volatile:防止编译的时候被优化

\n 换行  \t空一个tab键距离

条件运算符:(a>b)? a : b

区分++i,--i和i++,i--

int a=4;

a+=a++;  (a=9)

a+=++a;  (a=10)

++a+=a;  (a=10)

++a+=a++;  (a=11)

++a+=++a;  (a=12)

++a最先执行


内容概要:本文深入探讨了软件项目配置管理在汽车开发领域的应用及其重要性,强调配置管理不仅是版本控制,更是涵盖标识、追溯、结构化等多方面的深度管控。文章通过对比机械产品和软件产品的标签管理,揭示了软件配置管理的独特挑战。配置管理构建了一个“网”状体系,确保软件产品在复杂多变的开发环境中保持稳定和有序。文中还讨论了配置管理在实际工作中的困境,如命名混乱、文档更新不及时、发布流程冗长等问题,并提出了通过结构可视化、信息同源化、痕迹自动化和基线灵活化等手段优化配置管理的具体方法。 适合人群:具备一定软件开发和项目管理经验的工程师及项目经理,尤其是从事汽车电子软件开发的相关人员。 使用场景及目标:①理解配置管理在汽车软件项目中的核心作用;②学习如何通过工具链(如Polarion、JIRA、飞书等)优化配置管理流程;③掌握结构可视化、信息同源化、痕迹自动化和基线灵活化等关键技术手段,提升项目管理水平。 其他说明:配置管理不仅是技术问题,更涉及到项目管理和团队协作。文中强调了工具链的应用和优化的重要性,但同时也指出,工具本身并不能解决所有问题,关键在于如何合理使用工具并不断优化管理流程。文章呼吁读者成为长期主义者,相信时间的力量,持续改进配置管理工作。
内容概要:本文详细介绍了针对含甲烷水合物沉积物(MHBS)的本构模型 Hydrate-CASM。该模型基于扩展的临界状态模型(CASM),引入了致密化机制,将水合物饱和度变化导致的孔隙体积减少等效为沉积物密度的增加。模型通过修改剪切模量、体积模量等参数来反映水合物饱和度对沉积物力学性质的影响。此外,还扩展实现了水合物相变(形成/分解)对力学性质的影响,并通过三轴试验数据验证了模型的有效性。文章进一步探讨了模型验证与传统模型的对比,展示了 Hydrate-CASM在保持简洁性的同时能够达到与传统胶结模型相当的预测精度。 适合人群:地质工程、土木工程及相关领域的研究人员和技术人员,特别是关注天然气水合物储层稳定性和力学行为的学者。 使用场景及目标:①评估天然气水合物储层资源潜力及其对压力-温度(P-T)条件变化的响应;②预测水合物分解可能引发的沉积物变形,为天然气水合物开采过程中的储层稳定性评估提供依据;③分析海底环境变化导致的水合物分解风险。 其他说明:该模型不仅提供了理论框架,还通过详细的代码实现展示了模型的具体应用,便于读者理解和复现。模型的创新点在于引入了致密化机制而非传统的胶结作用来解释 MHBS的力学行为增强现象,并通过参数系统化和模块化设计确保了模型的数值稳定性和扩展性。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值