plain framework 1 参考手册 入门指引之 代码风格
代码风格
介绍
框架自身采用了google的C++风格,作者也鼓励在你的应用中使用此风格,有关此风格你可以查阅相关资料了解。下面是一段plain framework中的代码,以便大家参考:
你可以在此处下载到本项目使用的 风格指南:
链接:http://pan.baidu.com/s/1bneYgI7 密码:0ox1
base/global.h
/** * PLAIN FRAMEWORK ( https://github.com/viticm/plainframework ) * $Id global.h * @link https://github.com/viticm/plainframework for the canonical source repository * @copyright Copyright (c) 2014- viticm( viticm.ti@gmail.com ) * @license * @user viticm<viticm.ti@gmail.com> * @date 2014/07/28 15:57 * @uses the base module for global defines */ #ifndef PF_BASE_GLOBAL_H_ #define PF_BASE_GLOBAL_H_ #include "pf/base/config.h" namespace pf_base { namespace global { extern char net_modulename[FILENAME_MAX]; extern char script_modulename[FILENAME_MAX]; extern char performance_modulename[FILENAME_MAX]; extern char db_modulename[FILENAME_MAX]; extern char engine_modulename[FILENAME_MAX]; extern char applicationname[FILENAME_MAX]; //应用全局名称 extern uint8_t applicationtype; //应用的类型 0 服务器 1 客户端 PF_API const char *get_net_modulename(); PF_API const char *get_script_modulename(); PF_API const char *get_performanace_modulename(); PF_API const char *get_db_modulename(); PF_API const char *get_engine_modulename(); PF_API const char *get_applicationname(); PF_API void set_applicationname(const char *name); PF_API uint8_t get_applicationtype(); PF_API void set_applicationtype(uint8_t type); }; //namespace global }; //namespace ps_base #define NET_MODULENAME pf_base::global::get_net_modulename() #define SCRIPT_MODULENAME pf_base::global::get_script_modulename() #define PERFORMANCE_MODULENAME pf_base::global::get_performanace_modulename() #define DB_MODULENAME pf_base::global::get_db_modulename() #define ENGINE_MODULENAME pf_base::global::get_engine_modulename() #define APPLICATION_NAME pf_base::global::get_applicationname() #define APPLICATION_TYPE pf_base::global::get_applicationtype() #endif //PF_BASE_GLOBAL_H_
base/global.cc
#include "pf/base/string.h" #include "pf/base/global.h" namespace pf_base { namespace global { char net_modulename[FILENAME_MAX] = {0}; char script_modulename[FILENAME_MAX] = {0}; char performance_modulename[FILENAME_MAX] = {0}; char db_modulename[FILENAME_MAX] = {0}; char engine_modulename[FILENAME_MAX] = {0}; char applicationname[FILENAME_MAX] = {0}; uint8_t applicationtype = 0; const char *get_net_modulename() { __ENTER_FUNCTION if (strlen(net_modulename) > 0) return net_modulename; snprintf(net_modulename, sizeof(net_modulename) - 1, "net_%s", APPLICATION_NAME); return net_modulename; __LEAVE_FUNCTION return NULL; } const char *get_script_modulename() { __ENTER_FUNCTION if (strlen(script_modulename) > 0) return script_modulename; snprintf(script_modulename, sizeof(script_modulename) - 1, "script_%s", APPLICATION_NAME); return script_modulename; __LEAVE_FUNCTION return NULL; } const char *get_performanace_modulename() { __ENTER_FUNCTION if (strlen(performance_modulename) > 0) return performance_modulename; snprintf(performance_modulename, sizeof(performance_modulename) - 1, "performance_%s", APPLICATION_NAME); return performance_modulename; __LEAVE_FUNCTION return NULL; } const char *get_db_modulename() { __ENTER_FUNCTION if (strlen(db_modulename) > 0) return db_modulename; snprintf(db_modulename, sizeof(db_modulename) - 1, "db_%s", APPLICATION_NAME); return db_modulename; __LEAVE_FUNCTION return NULL; } const char *get_engine_modulename() { __ENTER_FUNCTION if (strlen(engine_modulename) > 0) return engine_modulename; snprintf(engine_modulename, sizeof(engine_modulename) - 1, "engine_%s", APPLICATION_NAME); return engine_modulename; __LEAVE_FUNCTION return NULL; } const char *get_applicationname() { __ENTER_FUNCTION if (0 == strlen(applicationname)) { snprintf(applicationname, sizeof(applicationname) - 1, "%s", "unknown"); } return applicationname; __LEAVE_FUNCTION return NULL; } void set_applicationname(const char *name) { string::safecopy(applicationname, name, sizeof(applicationname)); } uint8_t get_applicationtype() { return applicationtype; } void set_applicationtype(uint8_t type) { applicationtype = type; } }; //namespace global } //namespace pf_base
成员招募(长期有效)
如果你也对开源知识比较感兴趣,如果也对网络应用或者网络游戏感兴趣,如果你也对该框架感兴趣,你可以加入我们的QQ群(348477824)。
欢迎大家进群相互交流学习,同时也欢迎各位朋友对该框架供出自己的一份心力。
作者:viticm
出处: http://www.cnblogs.com/lianyue/
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· AI与.NET技术实操系列:基于图像分类模型对图像进行分类
· go语言实现终端里的倒计时
· 如何编写易于单元测试的代码
· 10年+ .NET Coder 心语,封装的思维:从隐藏、稳定开始理解其本质意义
· .NET Core 中如何实现缓存的预热?
· 分享一个免费、快速、无限量使用的满血 DeepSeek R1 模型,支持深度思考和联网搜索!
· 基于 Docker 搭建 FRP 内网穿透开源项目(很简单哒)
· ollama系列01:轻松3步本地部署deepseek,普通电脑可用
· 25岁的心里话
· 按钮权限的设计及实现