自动变量 目标文件 的后缀变换

本文介绍了一种在Makefile中实现目标文件名后缀从 .o 到 .ko 转换的方法,并通过一个简单示例展示了具体的实现过程。

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

在kenerl的makefile中 有这么一句话

 

Makefile.build  line 233

 

@{echo $(@: .o=.ko)}; echo $@; 

 

这句话的意思是 将 目标文件 的后缀变换成 .ko

 

 

我做了一个实验

 

$cat makefile

CC = gcc

a.out : main.c
        @set -e; echo "  [CC] main.o "; $(CC) main.c; echo $(@:.out=.ko);echo $@

 

 

 

运行结果

$make
  [CC] main.o
a.ko
a.out

 

 

这样 就把 a.out 变成了 a.ko

### 使用MATLAB读取Excel文件数据并进行批量修改 为了高效地处理多个Excel文件中的数据,在MATLAB环境中可以通过编写脚本来实现自动化流程。下面介绍一种常见的方式,即通过`dir()`函数获取指定目录下所有的Excel文件名列表,并循环调用`xlsread()`或更现代的`readtable()`/`readmatrix()`来加载每一个工作簿的内容。 #### 获取目标路径下的所有Excel文件名称 ```matlab % 定义要查找的目标文件夹位置以及模式匹配字符串(*.xlsx表示只找扩展名为xlsx的文件) folderPath = 'C:\Your\Directory'; filePattern = fullfile(folderPath, '*.xlsx'); files = dir(filePattern); numFiles = length(files); disp(['Found ', num2str(numFiles), ' Excel files']); ``` 对于每个找到的工作表,可以根据需求执行特定的操作: - **读取整个Sheet的数据** 如果只需要简单的读取操作,则可以直接采用如下方式: ```matlab for k = 1:numFiles fileName = fullfile(files(k).folder, files(k).name); [~, name] = fileparts(fileName); % 提取出不带后缀的名字 try data{k} = readtable(fileName); % 假设每张表的第一行为列标题 disp([name ': Data loaded successfully.']); % 对data{k}做进一步加工... catch ME warning(['Error loading ', name]); continue; end end ``` 此处使用了`try-catch`结构以防止某些异常情况阻止程序继续运行;如果某个文件无法正常打开或者解析失败,会跳过该文件并向用户发出警告提示[^1]。 - **针对具体单元格范围内的数值更新** 当涉及到具体的编辑任务时,比如替换某几列里的特殊字符、调整格式化样式等,可能需要更加细致地控制访问哪些部分的数据。此时可以借助于`actxserver`创建COM对象实例与外部应用程序对话,不过这种方式较为复杂且依赖操作系统环境配置。相比之下,利用内置API完成基本变换更为简便快捷: 假设现在有一个任务是要把所有表格里第3列中小数点后的两位四舍五入保留一位有效数字: ```matlab for k = 1:numFiles ... if isfield(data{k}, 'Variables') colToModifyIdx = find(strcmp({'VarNames'}, {'Column_You_Want'})); % 查找待更改字段索引 modifiedData = round(cell2mat(data{k}.Variables(:,colToModifyIdx)), 1); % 执行修约运算 % 将结果重新赋给原变量对应的属性 data{k}.Variables{:, colToModifyIdx} = num2cell(modifiedData); % 可选:保存回磁盘作为新版本 writetable(data{k}, ['Modified_' files(k).name], 'WriteVariableNames', true); else error('The structure of this table does not match expected format.'); end ... end ``` 上述代码片段展示了如何定位到感兴趣的列并通过标准库函数实施转换逻辑。值得注意的是这里假定原始数据是以表格形式存储(`readtable`)而不是纯矩阵(`readmatrix`),因此能够方便地引用各列标签来进行筛选[^3]。 最后提醒一点,实际应用过程中应当充分考虑边界条件和潜在的风险因素,例如确保源文件不会被意外覆盖丢失重要资料等问题。建议先在一个副本上测试完整的批处理方案再应用于正式场合。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值