写代码的时候,需要自己手工地去敲很多重复的代码。用这个工具,可以自动帮你生成头文件和C文件,并带有必要的宏定义。 . S1 B/ _" Y1 |
/*代码工厂创建,未经作者许可,不可复制、更改*/
/*代码作者:代码工厂*/( O6 g- a+ r' C4 H
/*创建时间:2014年11月5日18时37分33秒*/& q' }8 f2 J( ]& F) d6 F
#include "1.h": `4 R) q( \% x. B1 N2 D
/*== file: 1.h ==*/
/*代码工厂创建,未经作者许可,不可复制、更改*/
/*代码作者:代码工厂*/
/*创建时间:2014年11月5日18时37分33秒*/% ~7 `4 e* M8 f* h7 Z
/ ~0 W- q0 }6 V x' [/ n
#ifndef 1_H_% G- Y8 q! \% h) V% G0 Y6 ]
#define 1_H_0 r' e, D. ]. ?9 J, h0 F e5 \# X
+ W; j x' A4 r5 f5 o( |
#include "project.h"7 o1 `: r) m3 l1 e2 F7 Y! i
#ifdef __cplusplus& ?' Q# }7 Z+ c$ x+ G
extern "C"{/ t% W) {+ H7 q
#endif6 @) X# H/ J3 x
6 l; Q: n! q$ S9 O: n* y# b* s
#ifdef __cplusplus
}
#endif. H6 u# q3 x: _0 R1 v5 c
#endif, h% c; s. A+ ?0 V9 v& g; c, c
* L6 T# ~8 Q% e4 Y" X8 i
这有啥用?
( q& M# a6 \- I1 H* [4 P4 B
我们在写程序的时候,为了提高程序可读性,都会将不同功能模块归类到不同的 *.c(函数体) *.h(头文件),比如说要写一个串口功能模块的文件,生成过程如附件所示,针对生成内容再附加下列解释:
0 u% X/ ?% Q' d$ _& R! I
/*== file: uart1.h ==*/
/*代码工厂创建,未经作者许可,不可复制、更改*/
/*代码作者:代码工厂*/8 B. M8 h1 `7 K1 C% A. o7 D
/*创建时间:2014年11月5日21时31分35秒*/8 t. j0 X' q! f# z
#ifndef UART1_H_
#define UART1_H_; m( B6 q" S5 A* J% Z+ ^
- P' m" s* t! ^& x& [$ L% A9 @4 h
#include "project.h" //默认的工程配置文件头/ Z" V8 r7 }- k9 J# R
#ifdef __cplusplus //增加此宏定义后可被C++调用,否则部分C++编译器不能正常调用C函数8 _0 t2 M8 g. z0 @2 i, y# l
extern "C"{: o6 ~1 C& b3 K J
#endif
4 b9 `$ b, I" `* S+ J
void Uart1_Init( void ); //默认的功能模块初始化函数
//用户可以在此增加其它的全局函数
2 `6 a! B- C1 {3 _: X; g! T
3 W s2 e0 J+ x( j) m: R
#ifdef UART1_DEF3 j# O2 L( O( H4 u) `
//在此定义全局变量 比如 int Uart_Flag;
#else
//在定义extern全局变量,增加extern定义 比如 extern int Uart_Flag;
#endif5 Z- g2 t5 g" p! l4 g
#ifdef __cplusplus
}% [+ j+ v) j& r1 P6 x+ K/ C
#endif
#endif2 Q2 W2 p2 X$ O9 O5 k+ u5 D; {
+ s% g6 q) y* s6 ~' c, z1 c7 [ t2 c* A
/*== file: uart1.c ==*/
/*代码工厂创建,未经作者许可,不可复制、更改*/2 i- S2 }7 c9 L5 i
/*代码作者:代码工厂*/. t6 ?" F2 ]6 {4 K9 ]+ K
/*创建时间:2014年11月5日21时31分35秒*/4 [6 d- ?( G; N2 u
#define UART1_DEF
#include "uart1.h"
//===============================================: G* o" @6 w# [/ p! A
//--函数名称:Uart1_Init3 M! i( N& _+ W7 ~
//--函数说明:Uart1初始化函数
//===============================================. q- Q6 @$ b) d7 G( v) |6 }- T
void Uart1_Init( void )+ X. ]+ C; p- C6 ?/ m, b9 K
{
;
}
3 p9 Z" l. a9 A* Z) e
//上述全是代码工具自动生成的代码* o, X* W+ @, g" T. U1 K
, }& @6 a M) A2 D: t5 ]* p, ]' M# W
3 M- h' l6 ?# f+ I+ z
, X; Z x/ m# W- ~( C4 [
当然,这只是个人觉得一个不错的代码编写习惯了。如要新增一个功能模块,要手写两个重复率比较高的文件还是比较费精力的,这种活可以交给计算机来干最好了。
源代码已经提供,全部是基于C标准库,要移植到其它平台只需要重新编译一下就行了。
除非是商业级的软件发布,对于用户来讲,编译都是一件麻烦的事情。用户除了关注功能外,不会愿意把时间花在不相干的细节上,如果编译出了问题,还要纠结debug的事情。所以,现在开源的上位机软件大部分都是用脚本搞定的。当然,这也只是个人的看法,能做点小东西,楼主还是很厉害的,赞。