Python脚本生成包含标准的#ifndef保护宏的头文件

news/2025/9/27 22:53:24/文章来源:https://www.cnblogs.com/FBsharl/p/19115852
做一个python脚本,可以用python + 文件名的形式进行调用
 
 
 
 

以下是一个可以直接通过命令行调用的 Python 脚本:

方法一:独立脚本文件(推荐)

create_header.py

python
 
 
#!/usr/bin/env python3
"""
创建C语言头文件的脚本
用法: python create_header.py <文件名>
"""import sys
import osdef create_header_file(filename):"""生成一个C语言头文件,包含标准的#ifndef保护宏"""# 确保文件名以.h结尾if not filename.endswith('.h'):filename += '.h'# 生成保护宏(移除路径只保留文件名)base_name = os.path.basename(filename)guard_macro = f"_{base_name.upper().replace('.', '_')}_"content = f"""#ifndef {guard_macro}
#define {guard_macro}#endif /*{guard_macro}*/
"""with open(filename, 'w', encoding='utf-8') as f:f.write(content)print(f"✓ 已生成头文件: {filename}")def main():if len(sys.argv) != 2:print("用法: python create_header.py <文件名>")print("示例: python create_header.py user_config.h")sys.exit(1)filename = sys.argv[1]create_header_file(filename)if __name__ == "__main__":main()

方法二:单行命令版本

create_header_oneliner.py

python
 
 
#!/usr/bin/env python3
import sys, osif len(sys.argv) != 2:print("用法: python create_header_oneliner.py <文件名>")sys.exit(1)filename = sys.argv[1]
if not filename.endswith('.h'): filename += '.h'
guard = f"_{os.path.basename(filename).upper().replace('.', '_')}_"with open(filename, 'w') as f:f.write(f"#ifndef {guard}\n#define {guard}\n\n\n\n\n\n#endif /*{guard}*/\n")print(f"生成成功: {filename}")

使用方法:

bash
 
 
# 使用方法一
python create_header.py user_config.h# 或者(自动添加.h后缀)
python create_header.py user_config# 使用方法二
python create_header_oneliner.py my_header.h

方法三:制作成可执行文件(Linux/Mac)

bash
 
 
# 给脚本添加执行权限
chmod +x create_header.py# 然后可以直接执行
./create_header.py user_config.h

测试示例:

bash
 
 
# 创建测试文件
python create_header.py user_config.h# 查看生成的内容
cat user_config.h

输出结果:

c
 
 
#ifndef _USER_CONFIG_H_
#define _USER_CONFIG_H_#endif /*_USER_CONFIG_H_*/

这个脚本可以接受文件名作为参数,自动处理文件后缀和保护宏的生成,使用起来非常方便。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/920053.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

苗木网站模版网易企业邮箱服务器设置怎么填

目录 复合类型&#xff08;自定义类型&#xff09; 概述&#xff1a; 结构体变量的定义和初始化&#xff1a; 结构体成员的使用&#xff1a; 结构体做函数参数&#xff1a; 结构体值传参&#xff1a; 结构体地址传参&#xff1a; 共用体&#xff08;联合体&#xff09;&…

java实验作业和动手动脑

public class test { public static void main(String[]args){ int X=100; int Y=200; System.out.println("X+Y="+X+Y); System.out.println(X+Y+"=X+Y"); } } 一个是不计算直接转换为字符串,一…

(第三次)Numpy Pandas

(第三次)Numpy & Pandas在大数据分析与计算领域,Python的Numpy和Pandas库是不可或缺的核心工具。Numpy凭借高效的数值计算能力,成为处理海量数值数据的“快剑”;Pandas则以灵活的数据管理功能,化身打理复杂数…

网站运营管理的内容有哪些友情链接的作用大不大

专栏其他文章&#xff1a; 理论篇&#xff1a; &#xff08;一&#xff09;深入浅出TCPIP之理解TCP报文格式和交互流程 (二&#xff09;深入浅出TCPIP之再识TCP&#xff0c;理解TCP三次握手&#xff08;上&#xff09; (三&#xff09;深入浅出TCPIP之再识TCP&#xff0c;理解…

sg.帮我写一个类似于vb6窗体设计的PySimpleGUI布局设计助手

以下是一个基于PySimpleGUI实现的VB6风格窗体设计助手,集成了布局可视化、控件拖放模拟和主题定制功能,适用于快速构建类似VB6的窗体界面: import PySimpleGUI as sg from collections import OrderedDictclass VB6…

ABC325EF 题解

退役乱打D - Ulam-Warburton Automaton 待补。 E - Count Sequences 2 多重集排列数板子,典得不能再典的问题,这都能放来当比赛题的? 设 \(n = \sum C_i\),通常使用的公式为 \[ans = \dfrac{n!}{\prod_{i = 1}^{N}…

网站开发 例子网站的页面布局

简介&#xff1a; RocketMQ作为业务消息的首选&#xff0c;在消息和流处理领域被广泛应用。而微服务生态Spring框架也是业务开发中最受欢迎的框架&#xff0c;两者的完美契合使得RocketMQ成为Spring Messaging实现中最受欢迎的消息实现。本文展示了5种在Spring生态中文玩转Rock…

Win11 安装 Python

https://www.python.org/downloads/

IP新定义下的商业新范式:基于定制开发开源AI智能名片S2B2C商城小应用的IP价值变现研究

pre { white-space: pre !important; word-wrap: normal !important; overflow-x: auto !important; display: block !important; font-family: "Consolas", "Monaco", "Courier New", …

mysql的单表多大要考虑分库分表

一、问题背景 第一个问题,mysql的话,一般单表行数达到多少性能会开始明显下降,然后一般推荐单表行数到多少建议做分库分表呢;第二个问题,mysql的单库最大可支持的qps是多少,一般qps到了多少之后,会推荐进行分库…

深入解析:修电脑日志--电脑卡顿,需重装系统

深入解析:修电脑日志--电脑卡顿,需重装系统2025-09-27 22:41 tlnshuju 阅读(0) 评论(0) 收藏 举报pre { white-space: pre !important; word-wrap: normal !important; overflow-x: auto !important; display: b…

广州市网站建设分站价格网站统计

本文是参考了Joey的博客后整理的。 先从一个简单扩展jQuery对象的demo开始说起&#xff1a; //sample:扩展jquery对象的方法&#xff0c;redTextColor()用于改变字体颜色。(function ($) {$.fn.extend({"redTextColor": function () {// 默认字体颜色为红色return th…

盐城网站设计做竞猜网站合法吗

SSH&#xff08;Secure Shell&#xff09;是一种加密的网络协议&#xff0c;用于在不安全的网络上安全地进行远程登录和执行命令。它通过加密通信和身份验证机制&#xff0c;确保用户和系统之间的通信是安全的。 SSH协议的主要功能包括&#xff1a; 加密通信&#xff1a;SSH使…

2025 采购传感器不踩坑!国内传感器优秀厂家清单:解决精度,防爆,极端环境难题

采购传感器时,你是不是常遇到这些麻烦?想要高精度产品,却怕实际测量误差大;需要防爆、防水款,又担心认证不全不达标;面对极端高温低温环境,不知道选哪个品牌靠谱。市场上品牌多、参数杂,光看宣传根本辨不出好坏…

sg.有没有一个可视化辅助设计pysimplegui布局的小工具?

目前没有专门针对PySimpleGUI布局的可视化辅助设计独立工具,但可通过以下方式实现类似效果: 官方Demo中的布局示例 PySimpleGUI官方提供了Demo程序,其中包含大量布局示例。用户可以通过运行官方Demo,查看不同布局的…

无刷电机速度闭环控制

无刷电机有感方波闭环控制 前面已经实现了无刷电机的六步换向控制以及三相电流采集、电压温度采集。本章将学习如何利用PID实现速度环闭环控制和速度+电流双闭环控制。 速度闭环控制 想要实现速度闭环,必须知道此时的…

网站维护常识广州建网站新科网站建设

torch.where()中一般有三个参数。 第一个参数是一个判断条件。 第二个参数是条件成立时的值。 第三个参数是条件不成立时的值。 for batch in range(2):for i in range(256):for j in range(256):output[batch][i][j] 0 if tensor_count_0[A_arg[batch,i,j]][B_arg[batch,i…

seo网站优化专员桂林象鼻山水月洞

PERCONA PERFORMANCE CONFERENCE 2009上&#xff0c;来自雅虎的几位工程师带来了一篇”Efficient Pagination Using MySQL“的报告&#xff0c;有很多亮点&#xff0c;本文是在原文基础上的进一步延伸。首先看一下分页的基本原理&#xff1a;mysql> explain SELECT * FROM m…

长沙市网站建设公司代理商榆林建设网站

讀題 1143.最长公共子序列 自己看到题目的第一想法 看起來跟最長重複子数組很類似&#xff0c;但是要怎麼去推遞推的狀態沒有想法 看完代码随想录之后的想法 看完之後&#xff0c;大概釐清了整體想法&#xff0c;可以想成說&#xff0c;因為我們要考慮的是不連續的子序列&…

sg.如何使用PySimpleGUI调试器实时监控变量

在PySimpleGUI调试器中实时监控变量,可以通过调试器窗口的Variables标签页或弹出式调试窗口(Popout)实现。以下是详细步骤和技巧:一、核心方法:使用调试器窗口的Variables标签页启用调试器窗口 在代码中调用sg.sh…