首页 > 编程语言 >C嵌入式编程设计模式-C语言类实现方式

C嵌入式编程设计模式-C语言类实现方式

时间:2022-08-30 22:13:13浏览次数:50  
标签:return int 编程设计 top 嵌入式 bool static C语言 void

类的封装方式

  1. 以文件作为封装边界, 将外部调用的函数声明, 全局变量变量放入头文件中, 将具体实现放入.c文件中。

简单栈的实现代码:

/****************************************
 *@file: stack.h
*****************************************/
#ifndef _STACK_H_
#define _STACK_H_

#ifdef __cplusplus
extern "C" {
#endif
bool push(int val);
bool pop(int *pRet);
void show(void);
#ifdef __cplusplus
}
#endif

#endif
/****************************************
 *@file: stack.c
*****************************************/
#include <stdbool.h>
#include <stdio.h>
#include "stack.h"

static int buf[16];
static int top = 0;

static bool isStackFull(void)
{
	return top == sizeof(buf) / sizeof(int);
}

static bool isStackEmpty(void)
{
	return top == 0;
}

bool push(int val)
{
	if (isStackFull())
	{
		return false;
	}
	buf[top++] = val;
	return true;
}

bool pop(int *pRet)
{
	if (isStackEmpty())
	{
		return false;
	}
	
	*pRet = buf[--top];
	return true;
}

void show(void)
{
	if (isStackFull())
	{
		printf("stack is empty\n");
	}
	for (int i = 0; i < top; i++)
	{
		printf("%d\n", buf[i]);
	}
}

为了使这些不对外暴露,仅仅对所在文件的范围可见(Stack.c)可以使用static关键字改变链接属性

标签:return,int,编程设计,top,嵌入式,bool,static,C语言,void
From: https://www.cnblogs.com/yangcyan-blog/p/16641049.html

相关文章

  • C语言会员卡计费系统
    C语言会员卡计费系统程序设计题四:会员卡计费系统1问题描述设计一个会员卡计费管理系统,要求对会员进行分级管理,根据会员的级别享受不同的优惠政策。通过此课题,熟练掌......
  • C语言后缀表达式求值
    C语言后缀表达式求值从控制台输入一合法的后缀表达式,其中的运算符只包括+、一、*、/,运算数都是大于等于o的整数(除数不为零),按要求输出计算结果,或输出计算结和相对应的中缀......
  • C语言怎么给函数添加形参的默认值
    以下内容为本人的著作,如需要转载,请声明原文链接微信公众号「englyf」https://www.cnblogs.com/englyf/p/16637890.html如果不是机缘巧合,当年转到C++之后,恐怕很难再有机......
  • C语言 紧跟printf之后的while(1)
    当printf()后面紧跟while(1)时,printf的内容有时候能打印出来,有时候打印不出来原因是,printf()中的内容在缓冲区里,你得加上‘\n’或者使用fflush(stdout)才能让它......
  • C语言:命令行参数
    命令行参数在图形界面普及之前都使用命令行界面。DOS和UNIX就是例子。Linux终端提供类UNIX命令行环境。命令行(commandline)是在命令行环境中,用户为运行程序输入命令的行......
  • C语言猜数字游戏
    C语言猜数字游戏题目十:猜数字游戏1.设计要求:有一定的容错功能,界面友好,功能齐全。2.设计提示:猜数字游戏规则:a)一个四位数,各位上的数不重复,从1到9。b)按以下......
  • C语言学习进程(翁恺)
    1.0——C的基本结构及语句1.1——循环(loop)1.2——多路分支switch-case1.3——break&continue1.4——practice1  C的框架#include<stdio.h>intmain()......
  • 痞子衡嵌入式:在i.MXRT启动头FDCB里使能串行NOR Flash的QPI/OPI模式
    大家好,我是痞子衡,是正经搞技术的痞子。今天痞子衡给大家介绍的是在FDCB里使能串行NORFlash的QPI/OPI模式。我们知道Flash读时序里有五大子序列CMD+ADDR+......
  • C语言常用编译选项
    目录编译选项-Wall-Wextra-Werror-Werror=implicit-function-declaration-Werror=unused-variable参考编译选项当-Wxx时,指的是,针对某个类型产生告警,特殊的-Wall是对所有......
  • 嵌入式系统原理及应用教程课后习题(未完持续更新中)
    第一章:嵌入式系统概述1.1嵌入式系统的概念是什么?  以应用为中心、以计算机技术为基础、软件硬件可裁剪、适应应用系统对功能、可靠性、成本、体积、功耗严格要求的......