- 主题:同事间因为一个问题差点吵起来了
看了一下感觉都可以吧。
只要解析数据正确就行了呗。
【 在 flyren911 的大作中提到: 】
: 今天同事因为这个事差点吵起来了,事情是这样的:
: 两个process之间通过信号通信,A发了一个动态信号给B,B需要用一个静态数据结构保存下来在本地处理。信号数据结构简化了一下,看起来像这样,portCap的长度是动态的,band的长度也是动态的。
: typedef struct bandType
: ...................
--
FROM 27.154.193.*
你前面定义只有一个PortCapT, 后面肯定是PortCapT[0]啊。
后面的也许是你预留或者干嘛,反正取只能取第一个。
逻辑清楚就可以了。
只要收发两边用同一套,并且都能看到源代码,我觉得不容易出错。
当然要是写代码的人粗心大意瞎写那怎样也拦不住。
【 在 flyren911 的大作中提到: 】
: 就是解析数据可能会出错啊,
: 接收信号的逻辑是这样的,这个不能更改,receive返回的就是发送方分配的那块内存:
: local_radioCapT local_radioCap = *(local_radioCapT *)receive(SIG_ID);
: ...................
--
FROM 27.154.185.*
根据我多年的经验,我不会只看数据结构就瞎猜。
会结合上下文逻辑和运行时调试结果,最终得出一个结论。
尤其是有文档说明的情况下,会先看文档。但也不会无条件相信文档。
【 在 flyren911 的大作中提到: 】
: 我们可以看到原始的定义文件,但是跟我们的代码分开管理的,我们适配好之后就以我们的结构为准了,一般不会去看他们的结构定义了。其实问题最终可以归结为我前面几楼提出的一个面试题,也就是对结构体语义的理解,给定我同事的这样一个结构体,没有其他信息,你是看成静态数据结构还是动态数据结构?
: - 来自 水木社区APP v3.4.4
:
: ...................
--
FROM 27.154.192.*
你说得很对,我同意你的说法。
但现实是,很多代码改来改去,逻辑依赖关系和命名一致性早就不存在了~~
如果有,是运气好。正常情况下,都得靠自己摸排~~
【 在 flyren911 的大作中提到: 】
: 我的观点是给定了一个结构体也就是确定了它的结构,你就得按照给出的结构来解析,如果你按照不同于该结构体给出的信息来解析,就说明你定义的结构体错了,或者你的解析方式错了。打个比方一个结构体包含两个short int,但是你也可以解析成一个int,如果你要所有人都知道解析成一个int,那么就是你结构体定义错了。如果你结构体定义没错,那你解析成一个int就错了。
: - 来自 水木社区APP v3.4.4
:
: ...................
--
FROM 27.154.192.*