多平台编程规范(草稿)
来源:互联网 发布:enum java 继承 编辑:程序博客网 时间:2024/05/22 16:01
工作中时常会遇到,同一份代码需要在多个平台上使用,这种情况下,最好的办法就是把代码封装成库,并分别提供各个平台的接口。
下面就以C语言为例说说这个代码封装成库的方法:
首先,需要一个 platform.h 文件,用于定义各个平台
#ifndef __PLATFORM_H__#define __PLATFORM_H__#define SHS_SYS_WIN321#define SHS_SYS_LINUX0#define SHS_SYS_MAC0#define SHS_SYS_ANDROID 0#endif/* __PLATFORM__ */
其他的文件必须把此文件放在最顶端,以实现区分不同的平台,例如:
#pragma once#include "platform.h"#if (SHS_SYS_LINUX || SHS_SYS_MAC || SHS_SYS_ANDROID) #include <sys/time.h>#endif//(SHS_SYS_LINUX || SHS_SYS_MAC || SHS_SYS_ANDROID)#include "Iobuffer.h"#if (SHS_SYS_ANDROID) #include "RtmpLib.h"#elif SHS_SYS_WIN32 #include "IRtmpLib.h"#elif (SHS_SYS_LINUX || SHS_SYS_MAC) #include "log.h"#endif#if SHS_SYS_ANDROID char *buf = (char *)buf2;#endif#if (SHS_SYS_LINUX || SHS_SYS_MAC){ sprintf(m_arrMsg, "%s %u %s %s", __FILE__, __LINE__, __FUNCTION__, (char*)"RTMP URL: No :// in url!"); m_pLog->Log( FATAL, m_arrMsg );}#elif SHS_SYS_ANDROID{ LOG( FATAL, "RTMP URL: No :// in url!" );}#elif SHS_SYS_WIN32{ FATAL("RTMP URL: No :// in url!");}#endif
代码中,宏定义、函数定义、变量定义等定义直接使用#if ... #endif 来区分。其他代码使用 #if {...} #elif {...} #endif 来区别,这样看起来会比较美观一些。
转载请注明来自Master.R(石硕)的CSDN博客:blog.csdn.net/shishuo365 如有疑问请发邮件shishuo365#126.com(将#更换为@)
- 多平台编程规范(草稿)
- 汇编语言编程规范(草稿)
- 安全级 C语言编程规范(草稿)
- Delphi Spring Framework编程规范(草稿)V0.1
- Android平台java编程规范
- (OpenText Cordys)PaaS平台多租户共享外部WebService解决方案(草稿)
- 全志R58平台的GPIO引脚控制(草稿)
- 编程语言思考系列:编程范式(草稿)
- 将全志R16平台上的MIPI屏迁移到全志R40平台上(草稿)
- 隐士的数据库编码规范草稿
- 隐士的C#编码规范草稿
- 编程规范(记住!)
- 编程规范(上)
- 编程规范(下)
- qml编程规范--名字(命名规范)
- CSND_Ayo 自我介绍 [编码规范、编程语言、其它平台]
- Hadoop基础教程-第5章 YARN:资源调度平台(5.1 YARN介绍)(草稿)
- Hadoop基础教程-第5章 YARN:资源调度平台(5.3 YARN集群配置)(草稿)
- 各种版本linux下载地址
- 嫁给程序员的好处
- 启用Flash Player 11.3的全屏键盘输入注意事项
- 远程无法连接数据库的问题
- 字符从右波浪式出现然后落下
- 多平台编程规范(草稿)
- C# BackgroundWorker的使用
- eXtremeComponents参考文档
- 关于一些机器 到客户手里一两个月就有出现分区损坏不能启动的问题探讨
- 解决iPhone模拟器无法启动的方法
- JS实现上移下移功能
- 注册域名的步骤
- 用正则表达式判断是否为数字、是否为日期
- spring security3研究