- 主题:同事间因为一个问题差点吵起来了
是的,最后一段void,不过有效长度可以计算出来,无所谓。
其实我的问题就是如果让你用一个静态的数据结构去装载这个两层的动态数据,
你怎么定义这个静态数据结构,动态数据保存到静态数据结构的过程是直接拷贝,
在这个前提下,你还能有其他方案?
【 在 slowaction 的大作中提到: 】
: 他是一个两层的变长
: 这就决定了必然无法直接读取
: 最后那段数据不管怎么定义,都是一段void数据
: ...................
--
FROM 193.15.240.*
可能我说的不清楚,我们接收信号是在图形化的编程语言里面,接收信号的逻辑用C语言表达就是:
DataTypeT data = *(DataTypeT *)receive(SIG_ID);
这个逻辑是没法修改的,第三方的工具。
现在要你为主贴里的动态信号适配这个DataTypeT,你怎么适配?
【 在 slowaction 的大作中提到: 】
: int len
: char buf[] .
: buf里面 0或者1都很常见
: ...................
--
FROM 183.221.16.*
我没说明白,下面这一句是在第三方工具的内核里面实现的,不可更改。
DataTypeT data = *(DataTypeT *)receive(SIG_ID);
我们只能拿到DataTypeT类型的data,如果你不分配足够的空间,数据就丢失了。
【 在 slowaction 的大作中提到: 】
: 这返回的是数据指针
: 你要复制出来么
: 如果不复制出来,你最后用一个指针指过去就行了
: ...................
--
FROM 183.221.16.*
我感觉跟同事之间的争议点可以等价于这道面试题:
给定这样一个结构体
typedef struct house
{
int price;
} houseT;
typedef struct member
{
int num;
houseT house[1];
} memberT;
typedef struct family
{
int num;
memberT member[10];
} familyT;
familyT family;
如何获取第3个member的house的num?
A:
直接取值
result = family.member[2].num
B:
通过偏移取值
memberT *pm = NULL;
houseT *ph = NULL;
pm = family.member;
for(int i=0; i<3; i++)
{
ph = pm->house;
for(j=0; j<pm->num; j++)
{
ph++;
}
pm = (memberT *)ph;
}
result = pm->num;
我同事说选A的会拒掉,我觉得选B的我会拒掉。
--
修改:flyren911 FROM 183.221.16.*
FROM 183.221.16.*
不好意思,写的有点问题,我表达的意思就是给定这样一个结构体,正常人是直接取值还是通过偏移取值?
就是说给定这样一个结构体familyT ,对于你来说这个结构体到底是静态的还是动态的?
--
FROM 183.221.16.*
我们可以看到原始的定义文件,但是跟我们的代码分开管理的,我们适配好之后就以我们的结构为准了,一般不会去看他们的结构定义了。其实问题最终可以归结为我前面几楼提出的一个面试题,也就是对结构体语义的理解,给定我同事的这样一个结构体,没有其他信息,你是看成静态数据结构还是动态数据结构?
- 来自 水木社区APP v3.4.4
【 在 gluon521 的大作中提到: 】
你前面定义只有一个PortCapT, 后面肯定是PortCapT[0]啊。
后面的也许是你预留或者干嘛,反正取只能取第一
- 来自 水木社区APP v3.4.4
--
FROM 223.104.215.*
我的观点是给定了一个结构体也就是确定了它的结构,你就得按照给出的结构来解析,如果你按照不同于该结构体给出的信息来解析,就说明你定义的结构体错了,或者你的解析方式错了。打个比方一个结构体包含两个short int,但是你也可以解析成一个int,如果你要所有人都知道解析成一个int,那么就是你结构体定义错了。如果你结构体定义没错,那你解析成一个int就错了。
- 来自 水木社区APP v3.4.4
【 在 gluon521 的大作中提到: 】
根据我多年的经验,我不会只看数据结构就瞎猜。
会结合上下文逻辑和运行时调试结果,最终得出一个结论。
尤其是有文档说明的情
- 来自 水木社区APP v3.4.4
--
FROM 39.144.137.*
我感觉我们这边也是这样的,大部分leader都脱离一线技术岗了,缺少一些实际的经验。
- 来自 水木社区APP v3.4.4
【 在 il15 的大作中提到: 】
不说技术上的,这种事情太常见了。你还能拍板,我这边还有个leader,他和另外一个同事coding 水平我觉得可以称为约
- 来自 水木社区APP v3.4.4
--
FROM 39.144.137.*
嗯,这个可以。
【 在 freecutelei 的大作中提到: 】
: 你说的对,提个建议:data变量名改成raw_data
: 发自「今日水木 on iPhone XR」
--
FROM 193.15.240.*
问题就在这里,我们都觉得你定义了portCapT[],就表示里面装的是固定长度的portCapT数据,但是貌似我同事不认可,他说portCapT[]就是提供空间的作用。
【 在 eggcar 的大作中提到: 】
: 说实话我就没看明白,portCap是变长的,你同事准备怎么塞进portCapT[]里去
:
--
FROM 193.15.240.*