C 简易基础开发框架 - simple c

引言

    一个为 简单高效而生的 简易跨平台的 纯C开发框架.

    githup上源码   https://github.com/wangzhione/sconsole_project

请容我细说 simple c的优势.

  1.适合新手,刚开始思考开源框架了. 这个框架设计和代码都容易

  2.稀缺,C 的开源框架,要么很出名, 难度大, 要么就没有, 这里定位是中等左右

    3000 - 5000 行代码量没有过多的网络层,图形层东西,适合语法,逻辑开发层研究.

  3.特别适合在校生, 学习. 刚上学的时候,用了这个框架最开始绉形, 为老师做数据统计分析的

 

更好的发展, 以个人读书经验而言. 在window上比这个框架 学习用处更大我就觉得

  自制编程语言 那位大牛 写的两个框架 , 大家可以试试

对于 linux , 毕竟linux上优秀的开源框架太多了. 前提你能力够好,否则你也看不懂.

倒不如看这个. 简单还能改造成自己的框架. 

  在此声明,这个框架随便改, 随便玩, 不介意. 都是你的. 心情好,还可以免费帮你维护

修复一下.

 

前言

  这个项目刚发出去, 比较简单. 这里会详细介绍一下.经过仔细思考, 这个项目开发

侧重点在window上,测试侧重点在linux上, 发布侧重点也在linux上.  为什么呢. 容菜鸟我普及一下.

  1. 同等条件下linux程序员 编程水平比 window程序厉害

    因为linux 的学习成本,研究成本比window高很多, 需要自己折腾很久. 对于同样的知识.

  2. window 上最大优势是 开发效率高, 很方便的查看源码. 因为有宇宙最强IDE VS 旗舰版.

所以总结是, 要想提高技术,研究linux开发,要想提升工作开发效率,用vs. 我这里采用的思路是 使用VS开发

代码最初的demo,后面放到 linux上 详细测试调优. 

扯完了 先看 window 上 simple c 结构

上面两个图, 就是最终项目开发框架图. 源码见git, 也可以做成项目模板. 后面再说了.

看一下 linux上项目框架图

 

到这里基本对这个项目有了大概的了解了. 下面会细细说明作用的. 

 

正文

  原本想主打linux,后面觉得别说linux框架NB的无数,unix的框架更是望其项背. 后面还是猥琐一下,在window 上

说说纯C语法开发吧. 下面那就开始吧.

 

window 上使用说明

说的都是大白文,走个流程

首先是main 文件夹

  这里主要放的是主要运行模块代码,对外用的,测试用的. 上面几个test_*.c 代码都是相应的 模块测试代码

后面 readme 文件夹

  help.txt 这里是关于VS2015 使用上面的一些配置

module 是模块代码文件夹

  细分 pthread 模块文件夹

    pthread for window上代码,个人修改了冲突,让其能够在当前系统上运行

  struct 文件夹

    系统内部使用的 数据结构

  schead 文件夹

    保存了开发中用的 宏定义, 各种辅助模块,文件,日志,配置, 原子锁等.

总的而言框架就这样了. 再细说 请查看我以前 写的博文 C 基础框架那些库的代码设计

介绍的很详细.

 

linux 上使用说明

linux上 代码比window精简了很多. 因为linux系统内置很多模块. 从这里都能看出 linux从性能上比window高效太多了.

也就图形上研究人员少,有点薄弱. 目前网络层linux 优势大. 图形层window优势大.

还有需要说的一点是 linux 上编译步骤需要我们自己写. Makefile 文件如下

C = gcc
DEBUG = -g -Wall -D_DEBUG
#指定pthread线程库
LIB = -lpthread -lm
#指定一些目录
DIR = -I./module/schead/include -I./module/struct/include
#具体运行函数
RUN = $(CC) $(DEBUG) -o [email protected] $^ $(LIB) $(DIR)
RUNO = $(CC) $(DEBUG) -c -o [email protected] $^ $(DIR)

# 主要生成的产品
all:test_cjson_write.out test_csjon.out test_csv.out test_json_read.out test_log.out\
 test_scconf.out test_tstring.out

#挨个生产的产品
test_cjson_write.out:test_cjson_write.o schead.o sclog.o tstring.o cjson.o
    $(RUN)
test_csjon.out:test_csjon.o schead.o sclog.o tstring.o cjson.o
    $(RUN)
test_csv.out:test_csv.o schead.o sclog.o sccsv.o tstring.o
    $(RUN)
test_json_read.out:test_json_read.o schead.o sclog.o sccsv.o tstring.o cjson.o
    $(RUN)
test_log.out:test_log.o schead.o sclog.o
    $(RUN)
test_scconf.out:test_scconf.o schead.o scconf.o tree.o tstring.o sclog.o
    $(RUN)
test_tstring.out:test_tstring.o tstring.o sclog.o schead.o
    $(RUN)

#产品主要的待链接文件
test_cjson_write.o:./main/test_cjson_write.c
    $(RUNO)
test_csjon.o:./main/test_csjon.c
    $(RUNO)
test_csv.o:./main/test_csv.c
    $(RUNO)
test_json_read.o:./main/test_json_read.c
    $(RUNO)
test_log.o:./main/test_log.c 
    $(RUNO) -std=c99
test_scconf.o:./main/test_scconf.c
    $(RUNO)
test_tstring.o:./main/test_tstring.c
    $(RUNO)

#工具集机械码,待别人链接
schead.o:./module/schead/schead.c
    $(RUNO)
sclog.o:./module/schead/sclog.c
    $(RUNO)
sccsv.o:./module/schead/sccsv.c
    $(RUNO)
tstring.o:./module/struct/tstring.c
    $(RUNO)
cjson.o:./module/schead/cjson.c
    $(RUNO)
scconf.o:./module/schead/scconf.c
    $(RUNO)
tree.o:./module/struct/tree.c
    $(RUNO)

#删除命令
clean:
    rm -rf *.i *.s *.o *.out __* log ; ls -hl
.PHONY:clean

从上往下读,很基础,因为我的Makefile 学的很基础. 先编译什么,依赖什么. 这样把这个项目编译起来了. 大家试试. 发布的时候 去掉-D_DEBUG 就可以了.

想再说一点, 我们在window和linux上协同工作的时候,常遇到编码问题.

解决方案

  window上编译器 IDE 采用英文环境 默认 utf-8

  linux 采用 enca 很好用, 怎么安装, 自己google 一下.

到这里有点懒了,不想细说了. 就这样吧. 说的再多, 也说不清楚所有..............................

 

后记

  错误是难免的,欢迎吐槽...

这个框架出来,是该写一写好玩的东西. 有机会分享几个建议的游戏开发. 以后有机会准备分享一些. 下一个阶段有机会再分享一些网络库和数据库开发的知识.

bye...