多平台编程规范(草稿)

来源:互联网 发布: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(将#更换为@)

原创粉丝点击