如果我的问题显得琐碎,请原谅——我通常是一个控制系统的人(PLC和自动化),但最近发现自己涉足了一些嵌入式微控制器和PC项目。
假设我有一个函数,它接受一个指向“命令字节”数组的指针,通常长度为5或10个字节,如下所示:
我想解码命令字节(*cmd)。
更好的形式是什么?
假设我有一个函数,它接受一个指向“命令字节”数组的指针,通常长度为5或10个字节,如下所示:
char cmd_i2c_read(unsigned char *cmd, unsigned short cmd_len) { ... }
我想解码命令字节(*cmd)。
更好的形式是什么?
Create local variables indicating the purpose of each byte:
unsigned char device_address = cmd[2]; unsigned char register_address = cmd[3]; unsigned char num_bytes = cmd[4];<br> // use the local variables: if(num_bytes ≤ 0xFF) { do_stuff(device_address, register_address, num_bytes); }
Create local pointers:
unsigned char *device_address = &cmd[2]; unsigned char *register_address = &cmd[3]; unsigned char *num_bytes = &cmd[4];<br> // use the pointers: if(*num_bytes ≤ 0xFF) { do_stuff(*device_address, *register_address, *num_bytes); }
Index the *cmd array directly:
if(cmd[4] <= 0xFF) { do_stuff(cmd[2], cmd[3], cmd[4]); }