你的浏览器版本过低,可能导致网站不能正常访问!为了你能正常使用网站功能,请使用这些浏览器。
funcfile.rar
2014-11-5 17:57 上传
点击文件名下载附件
8.41 KB, 下载次数: 200
举报
suyong_yq 发表于 2014-11-7 00:02 / t" Y, A, ?- k; W4 u/ [& B3 f2 O! y" ?用C语言写,跨平台会有点问题,不如直接用Python等脚本搞定。还有,如果能自动生成工程文件就更好了。 ...
goswa 发表于 2014-11-7 09:30 : |# ^ ?' f: z源代码已经提供,全部是基于C标准库,要移植到其它平台只需要重新编译一下就行了。 ...
/*代码工厂创建,未经作者许可,不可复制、更改*/
/*代码作者:代码工厂*/3 E6 I9 T- ]. V6 R* ?
/*创建时间:2014年11月5日18时37分33秒*/0 q3 K2 x; F2 [; b( D2 w
#include "1.h"4 U3 o; \! p1 w, f
/*== file: 1.h ==*/9 e. B+ [! U6 _+ ^' m( n, W
/*代码工厂创建,未经作者许可,不可复制、更改*/3 h. c( X: j3 ^% T0 `
/*代码作者:代码工厂*/
/*创建时间:2014年11月5日18时37分33秒*/
- Y+ n, |7 c4 ?, l9 S
#ifndef 1_H_
#define 1_H_
% U0 u G' h5 F- D
#include "project.h"% o1 ^5 }" w! w: l- q& S/ y; p
#ifdef __cplusplus& H$ U! W6 q5 f; c
extern "C"{
#endif' S; ~5 ^* H+ J$ y1 ]
# \6 F. m. A4 b7 s% G
#ifdef __cplusplus
}) T' R" O# V: X3 ~/ h
#endif
#endif
: I, N! ]# [2 c
这有啥用? |: v* e( ^* h4 p5 j
我们在写程序的时候,为了提高程序可读性,都会将不同功能模块归类到不同的 *.c(函数体) *.h(头文件),比如说要写一个串口功能模块的文件,生成过程如附件所示,针对生成内容再附加下列解释:3 P" c( r' V( G7 t
' Y( V! {& |8 G1 a6 N# M7 _, s
/*== file: uart1.h ==*/
/*代码工厂创建,未经作者许可,不可复制、更改*/4 h5 }# Z) a" k- C
/*代码作者:代码工厂*/0 c( J2 }+ f1 f8 `8 H) ?
/*创建时间:2014年11月5日21时31分35秒*/
; G7 W; k5 L0 X0 q
#ifndef UART1_H_
#define UART1_H_2 w$ Y) \$ V) G- D9 H) t! v' n
2 r2 m( L7 D# _- k n2 I# W
#include "project.h" //默认的工程配置文件头 n: O: c# V# F2 G5 h$ `
#ifdef __cplusplus //增加此宏定义后可被C++调用,否则部分C++编译器不能正常调用C函数
extern "C"{
#endif* e0 y- P* c6 W& L
void Uart1_Init( void ); //默认的功能模块初始化函数
//用户可以在此增加其它的全局函数
#ifdef UART1_DEF
//在此定义全局变量 比如 int Uart_Flag;& C$ p7 O" n& D. U2 p5 O- ?
#else/ v) z4 U1 R. Z0 _! P
//在定义extern全局变量,增加extern定义 比如 extern int Uart_Flag;
#endif2 X) s+ w9 h3 w: w/ @
#ifdef __cplusplus9 p+ [* z, v# w& H
} n8 T0 y& U7 x% Y
#endif
#endif" l3 T1 L8 q, C+ O
+ V6 X9 M1 y. d( q. V. f6 e
( R4 `* B9 \0 q) F0 }
7 D! \) ^# x3 j6 K
/*== file: uart1.c ==*/- E4 o, H+ K0 K, ]) J! @! c4 I
/*代码工厂创建,未经作者许可,不可复制、更改*/2 b2 `+ t- v$ K9 N8 f' E
/*代码作者:代码工厂*/( P. C4 T2 X) ^8 i. f, M& `6 T
/*创建时间:2014年11月5日21时31分35秒*/) H; P4 B5 E: U6 j+ N0 r* M
#define UART1_DEF' g& e6 V/ R6 \) T+ P8 m
#include "uart1.h"+ y3 g& }! @" Z6 P
//===============================================
//--函数名称:Uart1_Init
//--函数说明:Uart1初始化函数
//===============================================) Z, D, |2 f- ^/ H; ]. k; g6 l
void Uart1_Init( void )
{
;6 Y( Z& s, e; _+ G2 S3 c
}
//上述全是代码工具自动生成的代码
7 E: {9 U& f, m: s6 [
当然,这只是个人觉得一个不错的代码编写习惯了。如要新增一个功能模块,要手写两个重复率比较高的文件还是比较费精力的,这种活可以交给计算机来干最好了。) ~% ~+ r( s8 A! V
源代码已经提供,全部是基于C标准库,要移植到其它平台只需要重新编译一下就行了。
除非是商业级的软件发布,对于用户来讲,编译都是一件麻烦的事情。用户除了关注功能外,不会愿意把时间花在不相干的细节上,如果编译出了问题,还要纠结debug的事情。所以,现在开源的上位机软件大部分都是用脚本搞定的。当然,这也只是个人的看法,能做点小东西,楼主还是很厉害的,赞。