diff --git a/include/HByteStack.h b/include/HByteStack.h index d91acdd..9c381de 100644 --- a/include/HByteStack.h +++ b/include/HByteStack.h @@ -107,6 +107,9 @@ HByteDataType HByteStackPop(HByteType *stackData); // 返回栈顶数据, 失败返回 HBYTE_STACK_ERROR HByteDataType HByteStackTop(const HByteType *stackData); +// 返回指定位置数据, 失败返回 HBYTE_STACK_ERROR +HByteDataType HByteStackGetPos(const HByteType *stackData, HByteLenType pos); + // 返回栈长度 HByteLenType HByteStackLen(const HByteType *stackData); diff --git a/src/HByteStack.c b/src/HByteStack.c index 104eae0..899cfa6 100644 --- a/src/HByteStack.c +++ b/src/HByteStack.c @@ -113,6 +113,15 @@ HByteDataType HByteStackTop(const HByteType *stackData) { return GetStackData(stackData, GetStackUseLen(stackData) - 1); } +// 返回指定位置数据, 失败返回 HBYTE_STACK_ERROR +HByteDataType HByteStackGetPos(const HByteType *stackData, HByteLenType pos) { + if (pos >= GetStackUseLen(stackData)) { + return HBYTE_STACK_ERROR; + } + + return GetStackData(stackData, pos); +} + HByteLenType HByteStackLen(const HByteType *stackData) { return GetStackLen(stackData); }