你的浏览器版本过低,可能导致网站不能正常访问!
为了你能正常使用网站功能,请使用这些浏览器。

自己写的一个代码生成工具,包含源代码共享给大家

[复制链接]
goswa 发布时间:2014-11-5 17:58
    写代码的时候,需要自己手工地去敲很多重复的代码。用这个工具,可以自动帮你生成头文件和C文件,并带有必要的宏定义。
- }1 J9 E# P7 c" ?6 o0 Z- n

funcfile.rar

下载

8.41 KB, 下载次数: 200

赞 收藏 1 评论11 发布时间:2014-11-5 17:58

举报

11个回答
xulay 回答时间:2014-11-5 18:40:06
/*== file: 1.c ==*/7 u* C- R8 n+ d9 ^+ ?# G
/*代码工厂创建,未经作者许可,不可复制、更改*/; }* L/ m7 O6 B% J: ?
/*代码作者:代码工厂*/4 O' M6 ?! P2 Z8 j0 i# v  `
/*创建时间:2014年11月5日18时37分33秒*/
9 q3 |3 Q, M; I#include "1.h"/ \3 Z* b, S& O. R! b. p

. H5 _( n& P# a( l# V! R/*== file: 1.h ==*/. y5 y2 t  ]/ S9 _, d- Y
/*代码工厂创建,未经作者许可,不可复制、更改*/
/ s7 t' \- d! B$ S1 ]; k& f+ }/*代码作者:代码工厂*/
% @5 Y2 \: s; G/*创建时间:2014年11月5日18时37分33秒*/
" @; i0 [- N& A
8 `$ s# f. J4 r. i" h  _#ifndef 1_H_/ w4 d( V, i# i+ _
#define 1_H_
1 o  o3 j, R/ [' L' i+ k5 ^) `/ M, |: f; k4 t( s
#include "project.h"
6 z: X7 O& ^1 S5 A0 A( c#ifdef __cplusplus  r# \; e; e( W# q) Z
extern "C"{
( o7 u0 N8 {- w, F3 p) i#endif
! P5 q$ N. `! Y' z) K' p, {
0 E2 f) f8 }: n$ T8 n. t#ifdef __cplusplus
! o/ }8 E2 w8 ?& X' m/ D8 B$ `9 |}
0 L: d: T) k7 V" a$ j, P#endif
  ?* e8 |: W+ x#endif) ?- h% j3 G, V- r# Y7 Q' f. x

! l5 E* x6 D- Z1 j$ g这有啥用?
+ h# [; w! c* k  O, @
goswa 回答时间:2014-11-5 21:51:02
本帖最后由 goswa 于 2014-11-5 21:54 编辑
4 \/ d- T3 g* j6 K, r$ V. h* \1 @: I
我们在写程序的时候,为了提高程序可读性,都会将不同功能模块归类到不同的 *.c(函数体)  *.h(头文件),比如说要写一个串口功能模块的文件,生成过程如附件所示,针对生成内容再附加下列解释:9 b$ p) D0 _: P9 K* m

7 y, e+ G; J, x$ {/*== file: uart1.h ==*/
3 G& |2 @- |/ W+ {1 p0 D/*代码工厂创建,未经作者许可,不可复制、更改*/
7 ]3 z& g9 t- J  j5 F- |; s/*代码作者:代码工厂*/* u9 j: p: [3 M" U5 D5 I% @8 E  V9 K
/*创建时间:2014年11月5日21时31分35秒*/- t- f/ p! u& X7 U2 i
1 {: `7 ^! H; v+ D& d/ W
#ifndef UART1_H_8 [% ~6 K+ Y% T2 ]+ j. \% c4 R8 D  c
#define UART1_H_  M6 r  u6 O; m+ w$ L
' {4 o8 f+ |0 h/ f. J( n4 h
#include "project.h"    //默认的工程配置文件头5 D. [  J0 ^5 u8 S$ b& K0 G
#ifdef __cplusplus   //增加此宏定义后可被C++调用,否则部分C++编译器不能正常调用C函数
. p8 t, b/ {8 y, k8 [( vextern "C"{7 E9 |% ?+ @2 N5 C
#endif
9 _) D* k' n: l" Q3 T8 M+ j, O; d. O* z- l" L7 r) h
void Uart1_Init( void );   //默认的功能模块初始化函数
2 D5 j9 @# z9 Q6 \0 H% G//用户可以在此增加其它的全局函数
2 v7 M/ i. k+ Y! D, W0 X! x, @5 V6 G7 y6 r
5 V4 z& ^) |3 N* N+ ]0 ]6 l
#ifdef UART1_DEF1 ^0 w: S& N/ J; o
//在此定义全局变量 比如 int Uart_Flag;
# b9 x1 t* v- u; ?$ m#else" S( y- w! o% Q' [. R/ R: U
//在定义extern全局变量,增加extern定义 比如 extern int Uart_Flag;: z: `, k" M! g6 I- @+ a- ~
#endif7 l4 {& X6 v) B, t( a0 |3 @% _
0 m6 {& \6 w; X$ Y
#ifdef __cplusplus; U- q0 h! @) c( ]3 n
}
& H  s, G4 t" w# k$ i0 B#endif
# A7 ~4 ]! Y& }& _+ b#endif) F8 L1 m6 o$ b/ T
* G; B; P# {# v% n$ O- U7 S: R

$ w  ~) ^6 m" r8 N5 Z! }- i9 ~) _* O3 P3 i1 F4 G4 i4 j

) z+ F3 q; \! x/*== file: uart1.c ==*/
4 _% R( ]5 O. L& O* U; `/*代码工厂创建,未经作者许可,不可复制、更改*/
1 q0 f8 [0 ]  P6 A5 |& `, W/*代码作者:代码工厂*/
  |% o' L  M# a, \2 r- n: K/*创建时间:2014年11月5日21时31分35秒*/
6 K/ }, a  J% W2 s#define UART1_DEF. {( Z3 s9 q* {, y' R
#include "uart1.h"1 V2 g. k+ w5 I7 R' N; l
/ x& c1 e, u' u1 R. x8 B
//===============================================+ ~3 b% j) S2 a3 C' k9 _+ z
//--函数名称:Uart1_Init$ {: [$ j/ @) Q0 Q1 R8 N* s. o: P; D
//--函数说明:Uart1初始化函数8 ^/ l- W8 b% y4 w: u! S" T
//===============================================
5 z5 o0 a# M+ G* [/ z9 y2 q; p. u- |void Uart1_Init( void )( A; ~& l$ O  y! F) n
{/ E% y& I# F6 H5 c: _0 `$ E
        ;! Y. y  a1 H7 a- X2 o0 ]1 g, x
}
8 `" }0 u, e& N3 F" A3 Q3 q" J2 e9 s' A# j- F. ^& G% V5 ^
//上述全是代码工具自动生成的代码0 W( v' }4 _4 m9 m, x  w6 Q

' @! e, @5 c  v( L7 O  ^! ?9 q1 W; l" y) A* S0 q" X
3 P8 i* ], g- T$ ^3 O0 z
* W' o! _9 o5 s$ d; k$ e
当然,这只是个人觉得一个不错的代码编写习惯了。如要新增一个功能模块,要手写两个重复率比较高的文件还是比较费精力的,这种活可以交给计算机来干最好了。' h6 h8 ]7 ]; ^# I" ~& D' J
生成过程.JPG
suyong_yq 回答时间:2014-11-7 00:02:48
用C语言写,跨平台会有点问题,不如直接用Python等脚本搞定。还有,如果能自动生成工程文件就更好了。
沐紫 回答时间:2014-11-7 08:53:42
谢谢楼主分享
goswa 回答时间:2014-11-7 09:30:38
suyong_yq 发表于 2014-11-7 00:024 }3 J8 o6 p9 l8 V# m# ^" [
用C语言写,跨平台会有点问题,不如直接用Python等脚本搞定。还有,如果能自动生成工程文件就更好了。 ...
5 e6 P+ u$ Q$ U% h9 f3 t- i* h
源代码已经提供,全部是基于C标准库,要移植到其它平台只需要重新编译一下就行了。
suyong_yq 回答时间:2014-11-10 13:27:40
goswa 发表于 2014-11-7 09:303 n3 P# C1 I3 }7 b
源代码已经提供,全部是基于C标准库,要移植到其它平台只需要重新编译一下就行了。 ...
; F* `7 \, }( q* l
除非是商业级的软件发布,对于用户来讲,编译都是一件麻烦的事情。用户除了关注功能外,不会愿意把时间花在不相干的细节上,如果编译出了问题,还要纠结debug的事情。所以,现在开源的上位机软件大部分都是用脚本搞定的。当然,这也只是个人的看法,能做点小东西,楼主还是很厉害的,赞。
逆风的沙 回答时间:2015-8-18 09:39:14
很厉害楼主
yigerenday 回答时间:2015-8-18 10:13:36
支持下,,,,,,,,,
yigerenday 回答时间:2015-8-18 10:13:55
谢谢楼主的分享
yigerenday 回答时间:2015-8-18 10:14:13
学习学习看
digiray 回答时间:2018-9-15 17:55:18
感谢一下
关于
我们是谁
投资者关系
意法半导体可持续发展举措
创新与技术
意法半导体官网
联系我们
联系ST分支机构
寻找销售人员和分销渠道
社区
媒体中心
活动与培训
隐私策略
隐私策略
Cookies管理
行使您的权利
官方最新发布
人形机器人运动控制、感知与智能配电
半导体创新技术与应用方向
EE架构与软件定义汽车
12V/48V 汽车智能配电(SPD)
区域控制单元(ZCU)与分区架构
关注我们
st-img 微信公众号
st-img 手机版