mirror of
https://gitee.com/const-zpc/param.git
synced 2025-02-06 04:38:21 +08:00
🎈 perf: 参数定义后,再添加到参数表中时不需要再声明类型
This commit is contained in:
parent
69eaf94ba4
commit
0bd4ebaf55
@ -2,24 +2,24 @@
|
||||
#include "param.h"
|
||||
#include <stdio.h>
|
||||
|
||||
PARAM_DEFINE (test, PARAM_INT16, 10, -100, 100);
|
||||
PARAM_DEFINE (test_2, PARAM_UINT16, 20, 0, 100);
|
||||
PARAM_DEFINE (test_3, PARAM_DOUBLE, 3.15, -10, 10);
|
||||
PARAM_DEFINE_DAT (test, PARAM_INT16, 10, -100, 100);
|
||||
PARAM_DEFINE_DAT (test_2, PARAM_UINT16, 20, 0, 100);
|
||||
PARAM_DEFINE_DAT (test_3, PARAM_DOUBLE, 3.15, -10, 10);
|
||||
PARAM_DEFINE_STR (test_str, 10, "abcdef");
|
||||
PARAM_DEFINE (test_4, PARAM_INT8, 8, -10, 10);
|
||||
PARAM_DEFINE (test_5, PARAM_UINT32, 620, 500, 10000);
|
||||
PARAM_DEFINE (test_6, PARAM_UINT8, 4, 5, 100);
|
||||
PARAM_DEFINE (test_7, PARAM_INT64, 5, -542, 5450);
|
||||
PARAM_DEFINE_DAT (test_4, PARAM_INT8, 8, -10, 10);
|
||||
PARAM_DEFINE_DAT (test_5, PARAM_UINT32, 620, 500, 10000);
|
||||
PARAM_DEFINE_DAT (test_6, PARAM_UINT8, 4, 5, 100);
|
||||
PARAM_DEFINE_DAT (test_7, PARAM_INT64, 5, -542, 5450);
|
||||
|
||||
ParamInfo_t sg_ParamTable[] = {
|
||||
PARAM_REG(1, test, PARAM_INT16, PARAM_ATTR_ALL),
|
||||
PARAM_REG(2, test_2, PARAM_UINT16, PARAM_ATTR_READ),
|
||||
PARAM_REG(3, test_3, PARAM_DOUBLE, PARAM_ATTR_READ | PARAM_ATTR_WRITE),
|
||||
PARAM_STR_REG(4, test_str, PARAM_ATTR_READ | PARAM_ATTR_WRITE),
|
||||
PARAM_REG(5, test_4, PARAM_INT8, PARAM_ATTR_READ),
|
||||
PARAM_REG(6, test_5, PARAM_UINT32, PARAM_ATTR_READ),
|
||||
PARAM_REG(7, test_6, PARAM_UINT8, PARAM_ATTR_READ),
|
||||
PARAM_REG(8, test_7, PARAM_INT64, PARAM_ATTR_WRITE),
|
||||
PARAM_ITEM_DAT(1, test, PARAM_ATTR_ALL),
|
||||
PARAM_ITEM_DAT(2, test_2, PARAM_ATTR_READ),
|
||||
PARAM_ITEM_DAT(3, test_3, PARAM_ATTR_READ | PARAM_ATTR_WRITE),
|
||||
PARAM_ITEM_STR(4, test_str, PARAM_ATTR_READ | PARAM_ATTR_WRITE),
|
||||
PARAM_ITEM_DAT(5, test_4, PARAM_ATTR_READ),
|
||||
PARAM_ITEM_DAT(6, test_5, PARAM_ATTR_READ),
|
||||
PARAM_ITEM_DAT(7, test_6, PARAM_ATTR_READ),
|
||||
PARAM_ITEM_DAT(8, test_7, PARAM_ATTR_WRITE),
|
||||
};
|
||||
|
||||
#define ATTR(x) ((x & (PARAM_ATTR_READ | PARAM_ATTR_WRITE)) == (PARAM_ATTR_READ | PARAM_ATTR_WRITE) ? \
|
||||
@ -53,7 +53,7 @@ void ShowAllParam(const ParamInfo_t *paramTable, uint16_t num)
|
||||
VIEW(PARAM_INT32, paramTable[i].pMinValue), VIEW(PARAM_INT32, paramTable[i].pMaxValue));
|
||||
break;
|
||||
case PARAM_INT64:
|
||||
printf(" %-4d %-15s %-10s %-6d %-8s %-10ld %-10ld %-10ld %-10ld\n",
|
||||
printf(" %-4d %-15s %-10s %-6d %-8s %-10lld %-10lld %-10lld %-10lld\n",
|
||||
paramTable[i].id, paramTable[i].pszName, "int64_t", paramTable[i].length, ATTR(paramTable[i].attr),
|
||||
VIEW(PARAM_INT64, paramTable[i].pCurValue), VIEW(PARAM_INT64, paramTable[i].pDefValue),
|
||||
VIEW(PARAM_INT64, paramTable[i].pMinValue), VIEW(PARAM_INT64, paramTable[i].pMaxValue));
|
||||
@ -77,7 +77,7 @@ void ShowAllParam(const ParamInfo_t *paramTable, uint16_t num)
|
||||
VIEW(PARAM_UINT32, paramTable[i].pMinValue), VIEW(PARAM_UINT32, paramTable[i].pMaxValue));
|
||||
break;
|
||||
case PARAM_UINT64:
|
||||
printf(" %-4d %-15s %-10s %-6d %-8s %-10lu %-10lu %-10lu %-10lu\n",
|
||||
printf(" %-4d %-15s %-10s %-6d %-8s %-10llu %-10llu %-10llu %-10llu\n",
|
||||
paramTable[i].id, paramTable[i].pszName, "uint64_t", paramTable[i].length, ATTR(paramTable[i].attr),
|
||||
VIEW(PARAM_UINT64, paramTable[i].pCurValue), VIEW(PARAM_UINT64, paramTable[i].pDefValue),
|
||||
VIEW(PARAM_UINT64, paramTable[i].pMinValue), VIEW(PARAM_UINT64, paramTable[i].pMaxValue));
|
||||
|
@ -15,7 +15,7 @@ AIM_NAME:=demo
|
||||
|
||||
.PHONY:all
|
||||
all:
|
||||
${GCC} ${INC} ${SRC} -o ${CURR_DIR_PATH}/${AIM_NAME}
|
||||
${GCC} ${INC} ${SRC} -o ${CURR_DIR_PATH}/${AIM_NAME} -std=c99
|
||||
|
||||
.PHONY:clean
|
||||
clean:
|
||||
|
@ -24,7 +24,7 @@
|
||||
|
||||
|
||||
/**
|
||||
* @brief 定义参数
|
||||
* @brief 定义普通参数
|
||||
*
|
||||
* @param name 参数名(变量名)
|
||||
* @param type 参数类型 @enum ParamType_e 取值
|
||||
@ -32,8 +32,8 @@
|
||||
* @param minVal 最小值
|
||||
* @param maxVal 最大值
|
||||
*/
|
||||
#define PARAM_DEFINE(name, type, defVal, minVal, maxVal) \
|
||||
typedef type##_T type##_##name##_T; \
|
||||
#define PARAM_DEFINE_DAT(name, type, defVal, minVal, maxVal) \
|
||||
enum {TYPE_##name = type};\
|
||||
type##_T name = defVal;\
|
||||
const type##_T def_##name = defVal;\
|
||||
const type##_T min_##name = minVal;\
|
||||
@ -51,13 +51,14 @@
|
||||
const char def_##name[] = {defVal};
|
||||
|
||||
/**
|
||||
* @brief 参数注册
|
||||
* @brief 普通参数注册
|
||||
*
|
||||
* @param id 参数唯一 ID
|
||||
* @param name 参数名(变量名)
|
||||
* @param type 参数类型 @enum ParamType_e 取值
|
||||
* @param attr 参数属性
|
||||
*/
|
||||
#define PARAM_REG(id, name, type, attr) { #name, id, type, sizeof(name), attr, &name, (void *)&def_##name, (void *)&min_##name, (void *)&max_##name }
|
||||
#define PARAM_ITEM_DAT(id, name, attr) { #name, id, TYPE_##name, sizeof(name), attr, &name, \
|
||||
(void *)&def_##name, (void *)&min_##name, (void *)&max_##name }
|
||||
|
||||
/**
|
||||
* @brief 字符串参数注册
|
||||
@ -65,7 +66,8 @@
|
||||
* @param id 参数唯一 ID
|
||||
* @param name 参数名(变量名)
|
||||
*/
|
||||
#define PARAM_STR_REG(id, name, attr) { #name, id, PARAM_STARING, sizeof(name), attr, name, (void *)def_##name, NULL, NULL }
|
||||
#define PARAM_ITEM_STR(id, name, attr) { #name, id, PARAM_STARING, sizeof(name), attr, name, \
|
||||
(void *)def_##name, NULL, NULL }
|
||||
|
||||
/**
|
||||
* @brief 参数声明
|
||||
@ -73,12 +75,7 @@
|
||||
* @param name 参数名(变量名)
|
||||
* @param type 参数类型 @enum ParamType_e 取值
|
||||
*/
|
||||
#define PARAM_EXTERN(name, type) \
|
||||
typedef type##_T type##_##name##_T; \
|
||||
extern type##_T name;\
|
||||
extern type##_T def_##name;\
|
||||
extern type##_T min_##name;\
|
||||
extern type##_T max_##name;
|
||||
#define PARAM_EXTERN_DAT(name, type) extern type##_T name;
|
||||
|
||||
/**
|
||||
* @brief 字符串参数声明
|
||||
@ -86,9 +83,7 @@
|
||||
* @param name 参数名(变量名)
|
||||
* @param length 字符串预留最大长度
|
||||
*/
|
||||
#define PARAM_STR_EXTERN(name, length) \
|
||||
extern char name[length];\
|
||||
extern char def_##name[];
|
||||
#define PARAM_EXTERN_STR(name, length) extern char name[length];
|
||||
|
||||
|
||||
extern size_t Param_MultiSerialize(uint8_t *pBuf, const ParamInfo_t *paramTable, uint16_t num, uint8_t opt);
|
||||
|
Loading…
x
Reference in New Issue
Block a user