
Program
文章平均质量分 84
iBlackAngel
曾梦想仗剑走天涯,后来因为工作忙没去
展开
-
C++源码生成·第三章·命令行参数
书接上回,在「C++源码生成·第二章·构建项目」中展示了如何通过替换模板文件中的关键字的方法,实现动态生成项目源码与项目说明文档的功能。在本文中我们继续完善 Python 脚本,增强项目模板的使用,同时将已有的最佳实践在源码生成项目中进行沉淀,提升源码生成工具的实用性。在之前的博文中有介绍 C++ 如何处理命令行参数的方法(见「Linux C/C++ 处理命令行参数」),在源码生成工具中可纳入此特性。原创 2024-10-26 00:42:52 · 1075 阅读 · 0 评论 -
C++源码生成·第二章·构建项目
书接上回,在「C++源码生成·第一章·初试模板」中展示了通过复制模板文件进行源码生成的方案,同时也描述了使用模板文件在源码生成工具中的作用,包括:提高代码一致性、减少重复劳动、易于维护和更新、增强可扩展性、促进最佳实践等优点。在本章将继续完善 Python 脚本,通过代替模板中的关键字来发挥模板文件的真正作用,实现源码的真正动态生成功能。在本文中展示了通过设计模板文件与使用项目名称替换其中关键字的方法,实现动态生成项目源码与项目说明文档的功能,展示了自动化源码生成工具的强大作用。原创 2024-10-24 00:30:05 · 1230 阅读 · 0 评论 -
Python 处理命令行参数
在 Python 脚本中处理命令行参数,最常用的方法是使用argparse模块,它提供了强大且灵活的命令行参数解析功能。以下是一个基本的示例,展示了如何使用argparse来处理命令行参数。在 Python 脚本开发过程中,argparse模块允许你轻松地定义、解析和处理命令行参数。argparse模块还提供了命令行出错以及帮助信息的自动生成功能,能够帮助用户更好地理解和正确使用你的 Python 脚本,提升程序的交互性与易用性,为用户提供良好的使用体验。原创 2024-10-18 19:36:55 · 492 阅读 · 0 评论 -
C++源码生成·第一章·初试模板
在「C++源码生成·序章」中介绍了使用 Python 生成 C++ 源码的基本操作,同时搭建了github项目仓库,通过示例项目和具体步骤展示了具体的实现流程。在本章会开始完善 Python 脚本与源代码模板文件,让其逐步成为一个真正可用的工具。在本文中展示了利用模板文件进行源码生成的机制与方法,同时也说明了模板文件在自动化源码生成工具中的重要作用。自动化源码生成工具通常利用模板引擎来生成代码,从而大大简化了开发和维护过程。本章内容与github是进行联动的,对应的 tag 是v1.1.0。原创 2024-10-17 17:03:21 · 895 阅读 · 0 评论 -
C++11 使用 {} 进行初始化
C++11 中的列表初始化特性提供了一种更加简洁、直观和安全的初始化方式。它不仅统一了各种对象的初始化方式,而且还能在编译时捕捉窄化转换等潜在错误。因此,在 C++11 及之后的代码中,推荐使用列表初始化作为默认的初始化方式。通过深入理解并掌握这一特性,我们可以编写出更加健壮、可读和可维护的 C++ 代码。原创 2024-10-17 10:19:16 · 1106 阅读 · 0 评论 -
C++源码生成·序章
在软件开发过程中,经常需要编写大量相似或重复的代码,而手动编写代码容易出现拼写错误、逻辑错误等问题。通过自动生成源码,可以显著减少开发人员手动编写代码的时间,避免重复劳动,使开发人员能够专注于更重要的业务逻辑,同时,针对手写代码容易出现的问题,自动生成源码也可以减少这些错误的发生,提高代码的质量。随着代码生成工具、模板元编程技术等的不断发展,自动生成源码变得更加容易和高效。这些工具和技术为开发人员提供了强大的支持,使他们能够更轻松地生成所需的代码。原创 2024-10-16 15:17:39 · 1043 阅读 · 0 评论 -
libtool 中的 .la 文件说明
以下是一个名为libgmp.la的.la 可被dlopen()函数调用的动态库名称,可能包含版本号。: 动态库名称。: 静态库名称。: 库的依赖关系。: 库的版本信息。libdir: 安装路径,库文件在文件系统中的位置。通常,开发者不需要直接处理.la文件。libtool和其他工具会自动读取这些信息。然而,了解.la文件的存在和作用可以帮助解决链接问题或理解项目的构建过程。原创 2024-09-08 10:37:14 · 940 阅读 · 0 评论 -
C++ 中的耗时计算函数
clock_gettime 可以获取系统时钟时间,通过该函数可计算函数的耗时原创 2024-01-04 15:29:33 · 886 阅读 · 0 评论 -
Linux C/C++ 获取系统时间
C 标准库提供了time()函数与函数可以获取到当前系统的日历时间,但time()函数精度只能到秒级,如果需要更高精度的系统时间需要使用函数,精度达到微秒级。原创 2022-12-15 13:22:54 · 6261 阅读 · 2 评论 -
Linux C/C++ 处理命令行参数
到目前为止,大部分人编写的所有程序都可以用一个命令运行。举个例子,如果我们编译了一个称之为myprog./myprog但是,如果你想从命令行向正在运行的程序传递信息,该怎么办?考虑一个更复杂的程序,比如 GCC。要编译myprog字符串-o,myprog和myprog.c都是 gcc 的命令行参数。(从技术上讲,gcc也是一个参数,我们稍后会看到)命令行参数非常有用。毕竟,如果不能向 C 函数传递参数,C 函数就不会很有用了——添加向程序传递参数的功能会使它们更有用。原创 2022-11-27 17:56:10 · 3928 阅读 · 1 评论 -
Linux C/C++ 单实例进程设计
当我们使用 C/C++ 开发一个守护进程或者一个服务端程序的时候,有时需要将该程序变成单进程,防止重复打开 socket 端口或者提供重复的服务。如果某个进程同时有多个实例运行,那么每个实例都可能尝试打开同一个端口或执行某个预定的操作,于是造成该操作的重复执行,这很可能导致出错。在 POSIX 系统中可以使用文件和记录锁机制来达成单实例进程设计。文件和记录锁机制为一种方法提供了基础,该方法保证一个守护进程只有一个副本在运行。原创 2022-12-01 22:44:50 · 1860 阅读 · 0 评论 -
GCC 生成动态库
GCC (GNU Compiler Collection) 是由 GNU 开发的编程语言编译器。GCC 包括 C, C++, Object-C, Fortran, Java, Ada 和 Go 语言前端,也包括这些语言的库(如 libstdc++, libgcj 等)。原创 2022-11-16 16:59:03 · 1074 阅读 · 0 评论 -
zlog 简易手册
zlog是一个高可靠性、高性能、线程安全、灵活、概念清晰的纯C日志函数库。zlog在效率、功能、安全性上大大超过了log4c,并且是用c写成的,具有比较好的通用性。原创 2022-11-01 17:33:01 · 649 阅读 · 0 评论 -
C/C++读写二进制文件
结合 fread 与 fwrite 函数读写二进制文件原创 2022-08-09 23:53:55 · 6593 阅读 · 0 评论 -
C/C++获取文件大小
利用fseek()与ftell()函数可以计算出一个文件的大小。原创 2022-08-09 15:13:36 · 5244 阅读 · 0 评论 -
UDP 基本通信框架
搭建最简单的 udp 通信框架原创 2022-08-01 22:15:54 · 647 阅读 · 0 评论 -
JsonCpp 使用指导
JSON 是一种轻量级数据交换格式。它可以表示数据、字符串、有序的值序列以及名称/值对的集合。JsonCpp 是一个 C++ 库,允许操作 JSON 值,包括字符串之间的序列化和反序列化。它还可以在反序列化/序列化步骤中保留现有注释,使其成为存储用户输入文件的方便格式。J...............原创 2022-06-24 14:27:08 · 6610 阅读 · 2 评论 -
Makefile Tutorial
(Makefile Tutorial)http://mrbook.org/tutorials/make/ (Write Makefile with me)http://bbs.chinaunix.net/forum.php?mod=viewthread&tid=408225原创 2013-08-07 08:54:44 · 2156 阅读 · 0 评论 -
获取/设置 windows 系统时间
SYSTEMTIME td;td.wMilliseconds = 0;td.wSecond = m_nSecond;td.wMinute = m_nMinute;td.wHour = m_nHour;td.wDay = m_nDay;td.wMonth = m_nMonth;td.wYear = m_nYear;SetLocalTime(&td);原创 2015-06-24 11:37:13 · 551 阅读 · 0 评论 -
获取环境变量
#include int main(int argc, char *argv[]){ const char *tmppath = "/tmp"; const char *user = ""; /** * in UNIX/Linux os, uses /tmp direcotry to store temp file, while in * Windows os, us原创 2015-06-25 11:55:45 · 551 阅读 · 0 评论 -
获取当前工作目录
#ifdef _WIN32# include # define getcwd _getcwd // stupid MSFT "deprecation" warning#else# include #endif /* _WIN32 */#include #include #include #include #include using namespace std;i原创 2015-06-25 11:32:47 · 705 阅读 · 0 评论 -
测试程序运行时间
1. 使用 clock() 测试运行时间#include <time.h>int main(int argc, char *argv[]){ clock_t start = clock(); /* your code here... */ clock_t end = clock(); double timeuse = (double)(end - start) / CL原创 2016-08-18 09:44:50 · 400 阅读 · 0 评论 -
产生随机数
产生随机数以下代码片段可产生 0 ~ RAND_MAX 区间的随机数,[0 ~ 100) 开区间的随机数,[a ~ b)开区间,[a ~ b]闭区间的随机数,[0 ~ 1]闭区间概率值#include <stdlib.h>int main(int argc, char *argv[]){ /* initialize random seed */ srand(time(NULL));原创 2016-08-18 10:18:28 · 492 阅读 · 0 评论 -
BCD码与十进制转换
BCD码转十进制#include <stdint.h>/* convert from BCD to dec */uint8_t dec = (bcd >> 4) * 10 + (bcd & 0x0f);十进制转BCD码#include <stdint.h>/* convert from dec to BCD */uint8_t bcd = ((dec / 10) << 4 & 0xf0)原创 2016-08-18 11:20:57 · 2027 阅读 · 0 评论