⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 gbstrtab.c

📁 一个小型的c语言编译器,做的非常好,不过不是我做的.
💻 C
字号:
#include	"GBStrTab.h"
#include	"Error.h"
#include	<malloc.h>
#include	<stdio.h>
#include	<string.h>

const_string *g_StringTabHead;

static	int		sg_nstr_num;
const	char	_STR_VAR_NAME[] = "str_%d";

// init string tab
void	InitStringTab()
{
	g_StringTabHead = NULL;
	sg_nstr_num = 0;
}

// free string tab
void	DestoryStringTab()
{
	const_string *p;

	p = g_StringTabHead;

	while ( p )
	{
		const_string *tmp = p;

		p = p->next;
		free(tmp);
	}
	g_StringTabHead = NULL;
	sg_nstr_num = 0;
}

// add string to string tab
// dont think the same string
// can add in string list , future........
const_string *AddStringToStrTab( const char *str )
{
	const_string *tmp;

	// malloc the memory
	tmp	= (const_string *)malloc( sizeof(const_string) );

	if ( !tmp )
	{
		yyerror("Out of memory in AddStringToStrTab()");
		user_exit(1);
	}

	// copy string and assign globe string value NO.
	strncpy( tmp->str, str, MAX_STR_LEN );
	sprintf( tmp->rname, _STR_VAR_NAME, sg_nstr_num++ );

	tmp->next = g_StringTabHead;

	g_StringTabHead = tmp;

	// ok, go........
	return	tmp;
}

const_string    *get_string_tab_head()
{
	return	g_StringTabHead;
}


⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -