首页 > 其他分享 >goahead 部分代码抽取学习

goahead 部分代码抽取学习

时间:2022-09-25 10:11:13浏览次数:42  
标签:typedef 抽取 mem 代码 PUBLIC char include ssize goahead

#include "stdafx.h"
#include <iostream>
using namespace std;
typedef time_t WebsTime;
typedef unsigned long ulong;
typedef unsigned char uchar;
typedef struct WebsMime {
	char    *type;                          /**< Mime type */
	char    *ext;                           /**< File extension */
} WebsMime;
typedef struct WebsFileInfo {
	ulong           size;                   /**< File length */
	int             isDir;                  /**< Set if directory */
	WebsTime        mtime;                  /**< Modified time */
} WebsFileInfo;
typedef long long int int64;
typedef int64 Offset;
typedef struct WebsRomIndex {
	char            *path;                  /**< Web page URL path */
	uchar           *page;                  /**< Web page data */
	int             size;                   /**< Size of web page in bytes */
	Offset          pos;                    /**< Current read position */
} WebsRomIndex;
#include <stdio.h>
#include <assert.h>
#define PUBLIC
#define PUBLIC_DATA extern
#define PRIVATE     static
typedef const char cchar;
typedef size_t ssize;
#define MAXINT 256
#include <string.h>
PUBLIC ssize slen(cchar *s)
{
	return s ? strlen(s) : 0;
}
PUBLIC ssize scopy(char *dest, ssize destMax, cchar *src)
{
	ssize      len;

	assert(src);
	assert(dest);
	assert(0 < dest && destMax < MAXINT);

	len = slen(src);
	if (destMax <= len) {
		if (destMax > 0) {
			*dest = '\0';
		}
		return -1;
	}
	strcpy(dest, src);
	return len;
}
typedef void (*WebsMemNotifier)(ssize size);
static WebsMemNotifier memNotifier;

PUBLIC void *walloc(ssize num)
{
	void    *mem;

	if ((mem = malloc(num)) == 0) {
		if (memNotifier) {
			(memNotifier)(num);
		}
	}
	return mem;
}


PUBLIC void wfree(void *mem)
{
	if (mem) {
		free(mem);
	}
}

typedef struct WebsBuf {
	char    *buf;               /**< Holding buffer for data */
	char    *servp;             /**< Pointer to start of data */
	char    *endp;              /**< Pointer to end of data */
	char    *endbuf;            /**< Pointer to end of buffer */
	ssize   buflen;             /**< Length of ring queue */
	ssize   maxsize;            /**< Maximum size */
	int     increment;          /**< Growth increment */
} WebsBuf;

int main()
{
	const char* str = "sdfsfds";
	char *abc=(char*)walloc(100);
    wfree(abc);
	cout<<slen(str)<<endl;
    system("PAUSE");
	return 0;
}

  

标签:typedef,抽取,mem,代码,PUBLIC,char,include,ssize,goahead
From: https://www.cnblogs.com/hshy/p/16727318.html

相关文章

  • 【代码片段】Qt6.2.4 C++ 退出应用程序方式
    转载https://blog.csdn.net/kidults/article/details/78549336正文触发析构函数方式//这种方式不会触发析构函数QApplication::exit(0);不触发析构函数方式(直接......
  • 代码随想录 链表理论基础, 移除链表元素(LeetCode 203), 设计链表(LeetCode 707)及翻转
    链表理论基础链表是一种通过指针串联在一起的线性结构,每一个节点由两部分组成,一个是数据域一个是指针域(存放指向下一个节点的指针),最后一个节点的指针域指向null(空指针的意......
  • 【前端必会】webpack的目标代码
    背景webpack生成什么样的代码呢?同的模块依赖的写法(import、exportexportdefault),会导致生成代码的不同,下面介绍普通的import与export开始导出PI1,max//index.jsletPI......
  • 编译原理:代码生成
    这编译的最后一步,也就是生成目标代码,则必须跟特定CPU架构相关。这就是编译器的后端。不过,后端不只是简单地生成目标代码,它还要完成与机器相关的一些优化工作,确保生成的目......
  • Docker的配置及与vscode的连接(coding代码仓库)
    Docker的配置及相关应用本文是为Docker的配置及应用相关操作。包含(Debian、WSL、Docker、vsCode、git)的安装与配置。且与Coding代码仓库的连接。(附上所有安装包链接:https:......
  • 学员管理系统完整代码
    #定义功能界面函数definfo_print():print('请选择功能----------------')print('1、添加学员')print('2、删除学员')print('3、修改学员信息')......
  • 04代码
    importdatetime#定义一个列表mot=["今天星期一:\n坚持下去不是因为我很坚强,而是因为我别无选择。",    "今天星期二:\n含泪播种的人一定能笑着收获。",    ......
  • python代码编写---PEP8规范
    PEP8规范---StyleGuideforPythonCodePEP8简介1.PEP是PythonEnhancementProposal的缩写,通常翻译为:Python增强提案enhance增强改善(V)Proposal提议建议(n)2.......
  • 代码随想录第四天| 24. 两两交换链表中的节点 、19.删除链表的倒数第N个节点 、160.链
    今天链表致死量第一题publicstaticclassListNode{intval;ListNodenext;ListNode(){}ListNode(intval){this.val=val;......
  • 使用coverlet统计单元测试的代码覆盖率
    单元测试是个好东西,可以在一定程度上兜底虽然写单元测试这件事情非常麻烦但是好的单元测试可以显著提高代码质量,减少bug,避免无意中的修改导致其他模块出错写测试......