生命中的+-*/、mod、=、==、%,:=

本文对比了多种编程语言中的基本运算符,包括加减乘除、取余、赋值及等号运算符,并针对每种语言的特点进行了说明,如PB中的赋值与判断相等的统一符号使用、JAVA中equals()函数的用途等。
 

我们都不再适应这个江湖,因为我们都很怀旧。

 取余赋值等于
SQL+*/mod==
PL/SQL+*/mod:==
PB+*/mod==
JAVA+*/%===
JavaScript+*/%===

一点说明:

1.PB中的赋值和判断是否相等用的都是“=”,至于到底是什么意义,由PB编译器根据上下文来判断,不用我们关心。

2.PB中减号的使用要小心,使用减号的时候,保证在“-”的两边要有空格,否则编译器报错。

3.MOD函数有两个参数,前面是除数,后面是被除数。即MOD(5,3)的值是2.“%”的使用相信大家都不会陌生。

4.PL/SQL中赋值时记得前面的两点,否则错误发生了还不知道怎么回事呢!

5.JAVA中判断两个基本数据类型的值是否相等要用到“==”,当两个对象用“==”比较时,比较的是内存地址,而要比较”值”的话,就要用到equals()函数了。

6.SQL中赋值和相等用的也是“=”,不过这个就比PB中的好理解很多。

参照这种方式: /*!Copyright(c) 2008-2014 Shenzhen TP-LINK Technologies Co.Ltd. * *\file cliPpppoeCircuitIdHandlers.c *\brief Cli source file of PPPoE Circuit ID module. * *\author Songyuhang *\version 1.0.0 *\date 02/19/2025 * *\history arg 1.0.0 02/19/2025, Songyuhang, create the file */ /**************************************************************************************************/ /* INCLUDE_FILES */ /**************************************************************************************************/ #define HAS_DEBUG #define DBG_ON 1 #define DBG_VRBS_ON 1 #define DBG_MAJOR_ON 1 #define __DBG_MOD_SET__ "PPPOE" #include "tpDbg/tpdebug.h" /* libc header */ #include <stdio.h> /* syscall header */ /* common header */ #include "fepDefs.h" /* platform header */ #include "midware/tpConfig.h" #include "midware/tpState.h" #include "userPort/user_port.h" #include "userPort/up_str.h" #include "common/applError.h" #include "cliPppoeCircuitIdHandlers.h" /**************************************************************************************************/ /* DEFINES */ /**************************************************************************************************/ #ifdef MODULE_NAME #undef MODULE_NAME #endif #define MODULE_NAME "pppoeCircuitId" /**************************************************************************************************/ /* TYPES */ /**************************************************************************************************/ /**************************************************************************************************/ /* EXTERN_PROTOTYPES */ /**************************************************************************************************/ /**************************************************************************************************/ /* LOCAL_PROTOTYPES */ /**************************************************************************************************/ /**************************************************************************************************/ /* VARIABLES */ /**************************************************************************************************/ /**************************************************************************************************/ /* LOCAL_FUNCTIONS */ /**************************************************************************************************/ /**************************************************************************************************/ /* PUBLIC_FUNCTIONS */ /**************************************************************************************************/ int cli_pppoeSysState(int state) { APPL_IF_ERR_RET(pppoeSysStateSet(state)); return ERR_NO_ERROR; } int cli_pppoeCirEther(char *portListStr, int state, int type, char *udfVal) { APPL_IF_ERR_RET(pppoeCirEtherSet(portListStr, state, type, udfVal)); return ERR_NO_ERROR; } int cli_pppoeRemEther(char *portListStr, int state, char *udfVal) { APPL_IF_ERR_RET(pppoeRemEtherSet(portListStr, state, udfVal)); return ERR_NO_ERROR; } int cli_showPppoeGlobal(cli_env *pCliEnv) { int ret = ERR_NO_ERROR; char buf[TPCONFIG_BUFFER_LEN] = {}; int oldState = DISABLE_PPPOE_CIRCUIT; char *state[2] = {"Disable", "Enable"}; APPL_IF_ERR_DONE_RET(ret, pppoeGetGlobalConfig(&oldState), ERR_BAD_PARAM); snprintf(buf, sizeof(buf), "PPPoE ID Insertion State:%-10s%s\r\n", " ", state[oldState]); cliPrintf(pCliEnv, buf); done: return ret; } int cli_pppoePortCfgShowByInterface(cli_env *pCliEnv, int portMode, char *portListStr) { int ret = ERR_NO_ERROR; user_port up = {}; CP_PARSE_OPTION opt = {}; char strPort[UP_LIST_STR_LEN_MIN] = {}; char emptyVal[] = "---"; char tUdfVal[MAX_PPPOE_ID_LENGTH + 1] = {}; char tRemoteVal[MAX_PPPOE_ID_LENGTH + 1] = {}; char buf[TPCONFIG_CLI_BUFFER_LEN] = {}; const char *state[2] = {"Disable", "Enable"}; const char *type[4] = {"IP", "MAC", "UDF", "UDF-ONLY"}; ret = usStr2Up(UP_MODE_INTF_INVALID, (const char *)portListStr, &up, &opt); if (!UP_IS_AVAILABLE(up) || !UP_IS_SWP_PORT(up)) { ret = ERR_BAD_PARAM; goto done; } int upIdx = UP_INDEX(up); PPPOE_CIRCUIT_PORT_CFG_T portCfg = {}; APPL_IF_ERR_DONE_RET(ret, pppoeGetEthernetConfig(upIdx, &portCfg), ERR_BAD_PARAM); if (0 == strlen(portCfg.udfValue)) { memcpy(tUdfVal, emptyVal, 4); } else { memcpy(tUdfVal, portCfg.udfValue, strlen(portCfg.udfValue)); } memset(tRemoteVal, 0, MAX_PPPOE_ID_LENGTH + 1); if (0 == strlen(portCfg.remoteId)) { memcpy(tRemoteVal, emptyVal, 4); } else { memcpy(tRemoteVal, portCfg.remoteId, strlen(portCfg.remoteId)); } snprintf(buf, sizeof(buf), "%-12s%-14s%-14s%-41s%-14s%-41s\r\n", " Port ", "Circuit-ID", "C-ID Type", "C-ID Value(UDF)", "Remote-ID", "R-ID Value"); cliPrintf(pCliEnv, buf); snprintf(buf, sizeof(buf), "%-12s%-14s%-14s%-41s%-14s%-41s\r\n", "-------", "-----------", "-----------", "--------------------------------", "-----------", "--------------------------------"); cliPrintf(pCliEnv, buf); usUp2Str(up, strPort, 1); snprintf(buf, sizeof(buf), "%-12s%-14s%-14s%-41s%-14s%-41s\r\n", strPort, state[(portCfg.state & 0x1)], type[portCfg.type], tUdfVal, state[(portCfg.state >> 1)], tRemoteVal); cliPrintf(pCliEnv, buf); done: return ret; } int cliPppoeDisplayInterface(cli_env *pCliEnv, user_port up) { int ret = ERR_NO_ERROR; char strPort[UP_LIST_STR_LEN_MIN] = {}; char emptyVal[] = "---"; char tUdfVal[MAX_PPPOE_ID_LENGTH + 1] = {}; char tRemoteVal[MAX_PPPOE_ID_LENGTH + 1] = {}; char buf[TPCONFIG_CLI_BUFFER_LEN] = {}; const char *state[2] = {"Disable", "Enable"}; const char *type[4] = {"IP", "MAC", "UDF", "UDF-ONLY"}; if (!UP_IS_AVAILABLE(up) || !UP_IS_SWP_PORT(up)) { ret = ERR_BAD_PARAM; goto done; } int upIdx = UP_INDEX(up); PPPOE_CIRCUIT_PORT_CFG_T portCfg = {}; APPL_IF_ERR_DONE_RET(ret, pppoeGetEthernetConfig(upIdx, &portCfg), ERR_BAD_PARAM); if (0 == strlen(portCfg.udfValue)) { memcpy(tUdfVal, emptyVal, 4); } else { memcpy(tUdfVal, portCfg.udfValue, strlen(portCfg.udfValue)); } memset(tRemoteVal, 0, MAX_PPPOE_ID_LENGTH + 1); if (0 == strlen(portCfg.remoteId)) { memcpy(tRemoteVal, emptyVal, 4); } else { memcpy(tRemoteVal, portCfg.remoteId, strlen(portCfg.remoteId)); } usUp2Str(up, strPort, 1); snprintf(buf, sizeof(buf), "%-12s%-14s%-14s%-41s%-14s%-41s\r\n", strPort, state[(portCfg.state & 0x1)], type[portCfg.type], tUdfVal, state[(portCfg.state >> 1)], tRemoteVal); cliPrintf(pCliEnv, buf); done: return ret; } int cli_pppoePortCfgShow(cli_env *pCliEnv) { int ret = ERR_NO_ERROR; int idx = 0; user_port up = {}; valid_uplist valid_uplist = NULL; char buf[TPCONFIG_CLI_BUFFER_LEN] = {}; snprintf(buf, sizeof(buf), "%-12s%-14s%-14s%-41s%-14s%-41s\r\n", " Port ", "Circuit-ID", "C-ID Type", "C-ID Value(UDF)", "Remote-ID", "R-ID Value"); cliPrintf(pCliEnv, buf); snprintf(buf, sizeof(buf), "%-12s%-14s%-14s%-41s%-14s%-41s\r\n", "-------", "-----------", "-----------", "--------------------------------", "-----------", "--------------------------------"); cliPrintf(pCliEnv, buf); PFM_IF_FAIL_DONE(ret, valid_uplist_init(&valid_uplist, 0)); PFM_IF_FAIL_DONE(ret, valid_uplist_get(&valid_uplist, 0)); UP_ITER_AVL_SWP(valid_uplist, idx, up) { cliPppoeDisplayInterface(pCliEnv, up); } done: valid_uplist_free(&valid_uplist); return ret; }
最新发布
09-02
#include "slp_model.h" #include "nsd_common.h" #include "arp_scanner.h" #include "arpd_action.h" #include "arpd_dms.h" /* ---------- DMS ubus 方法的注册 ------------ */ /* 注册ubus具体方法 */ LOCAL DMS_CMD_METHOD arpd_method[] = { DMS_CMD_METHOD_DESC("get_conf", dms_arpd_get), DMS_CMD_METHOD_DESC("set_conf", dms_arpd_set), DMS_CMD_METHOD_DESC("start_scan", dms_arpd_start), DMS_CMD_METHOD_DESC("stop_scan", dms_arpd_stop), DMS_CMD_METHOD_DESC("get_scan_status", dms_arpd_status), DMS_CMD_METHOD_DESC("get_scan_result", dms_arpd_result), DMS_CMD_METHOD_DESC("clear_result", dms_arpd_clear), }; LOCAL DMS_CMD_OBJ_CMD arpd_cmd[] = { DMS_CMD_OBJ_CMD_DESC("arpd", arpd_method), }; /* 注册ubus模块 */ LOCAL DMS_CMD_OBJ arpd_call_obj = DMS_CMD_OBJ_DESC("arpd", arpd_cmd); LOCAL int arpd_cmd_call_handle(dms_handler_t *handler, U8 *mbuf, U32 mlen, U32 sender_dms_id) { return dms_cmd_msg_parse(handler, mbuf, mlen, sender_dms_id, &arpd_call_obj); } /* ---------- 模块的注册与基础函数 ------------ */ LOCAL S32 arpdmod_stop() { /* 停止扫描 */ int stop_resultt = arp_scanner_stop(); /* 取消注册的DS方法 */ // ds_unregister_get_json("arpd_config", "arpd_info", "arpd_info", get_arpd_info); // ds_unregister_set_json("arpd_config", "arpd_info", "arpd_info", set_arpd_info); ds_unregister_action("arpd", "start_scan", arpd_start_scan); ds_unregister_action("arpd", "stop_scan", arpd_stop_scan); ds_unregister_action("arpd", "get_scan_status", arpd_get_scan_status); ds_unregister_action("arpd", "get_scan_result", arpd_get_scan_result); ds_unregister_action("arpd", "clear_result", arpd_clear_result); /* 取消注册的dms ubus调试方法 */ msg_detach_handler(MSGID_DMS_CMD, arpd_cmd_call_handle); return OK; } LOCAL S32 arpdmod_start() { int start_result = arp_scanner_start(); if (start_result == 0) { return OK; } else { return -1; } } LOCAL S32 arpdmod_reload() { return OK; } LOCAL S32 arpdmod_check() { return OK; } LOCAL S32 arpdmod_init() { /* ------- DS TDCP接口 ---------- */ /* 可以复写get/set json函数 */ // ds_register_get_json("arpd_config", "arpd_info", "arpd_info", get_arpd_info); // ds_register_set_json("arpd_config", "arpd_info", "arpd_info", set_arpd_info); /* 注册do方法函数 */ ds_register_action("arpd", "start_scan", arpd_start_scan); ds_register_action("arpd", "stop_scan", arpd_stop_scan); ds_register_action("arpd", "get_scan_status", arpd_get_scan_status); ds_register_action("arpd", "get_scan_result", arpd_get_scan_result); ds_register_action("arpd", "clear_result", arpd_clear_result); /* ------- DMS ubus接口 ---------- */ /* 注册ubus call调试方法 */ msg_attach_handler(MSGID_DMS_CMD, arpd_cmd_call_handle); return OK; } LOCAL void arpd_main() { /* 声明基础函数 */ DS_MOD_DESC arpd_module = DS_STRUCT_MOD("arpdmod", arpdmod_init, NULL, NULL, arpdmod_start, arpdmod_stop, NULL, NULL); /* 向ds注册模块 */ MODULE *module_node = ds_register_module("arpdmod", &arpd_module); NSD_ASSERT(NULL != module_node); } NSD_INIT(arpd_main);根据这个整理一下ds和dms模块的用法
08-29
LOCAL S32 arpdmod_stop() { /* 取消注册的DS方法 */ // ds_unregister_get_json("arpd_config", "arpd_info", "arpd_info", get_arpd_info); // ds_unregister_set_json("arpd_config", "arpd_info", "arpd_info", set_arpd_info); ds_unregister_action("arpd", "start_scan", arpd_start); ds_unregister_action("arpd", "stop_scan", arpd_stop); ds_unregister_action("arpd", "get_scan_status", arpd_get_status); ds_unregister_action("arpd", "get_scan_result", arpd_get_result); ds_unregister_action("arpd", "clear_result", arpd_clear_result); /* 取消注册的dms ubus调试方法 */ msg_detach_handler(MSGID_DMS_CMD, arpd_cmd_call_handle); return OK; } LOCAL S32 arpdmod_start() { /* 把配置文件读到本地 */ load_arpd_conf(&g_arpd_info); return OK; } LOCAL S32 arpdmod_reload() { return OK; } LOCAL S32 arpdmod_check() { return OK; } LOCAL S32 arpdmod_init() { /* ------- DS TDCP接口 ---------- */ /* 可以复写get/set json函数 */ // ds_register_get_json("arpd_config", "arpd_info", "arpd_info", get_arpd_info); // ds_register_set_json("arpd_config", "arpd_info", "arpd_info", set_arpd_info); /* 注册do方法函数 */ ds_register_action("arpd", "start_scan", arpd_start_scan); ds_register_action("arpd", "stop_scan", arpd_stop_scan); ds_register_action("arpd", "get_scan_status", arpd_get_scan_status); ds_register_action("arpd", "get_scan_result", arpd_get_scan_result); ds_register_action("arpd", "clear_result", arpd_clear_result); /* ------- DMS ubus接口 ---------- */ /* 注册ubus call调试方法 */ msg_attach_handler(MSGID_DMS_CMD, arpd_cmd_call_handle); return OK; } LOCAL void arpd_main() { /* 建立其它模块的监听关系 */ // DS_DAT_MON_DESC arpd_data_monitor[] = // { // DS_DAT_MON(LINK_STATUS_PATH, DATA_ATTRI_NOTIFY), // DS_DAT_MON(DDNS_CONFIG_INFO_PATH, DATA_ATTRI_NOTIFY), // }; /* 声明基础函数 */ DS_MOD_DESC arpd_module = DS_STRUCT_MOD("arpdmod", arpd_init, NULL, NULL, arpdmod_start, arpdmod_stop, NULL, NULL); // DS_STRUCT_MOD("arpd", arpd_init, arpd_check, arpd_reload, arpd_start, arpd_stop, // NULL, arpd_data_monitor); /* 向ds注册模块 */ MODULE *module_node = ds_register_module("arpdmod", &arpd_module); NSD_ASSERT(NULL != module_node); } NSD_INIT(arpd_main);这个模块启动的start应该怎么写
08-28
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值