- 主题:同事间因为一个问题差点吵起来了
bandNum表示长度。
【 在 beet 的大作中提到: 】
: band怎么做到变长,序列化的时候怎么知道band的长度?
--
FROM 193.15.240.*
指针数组肯定不行,数据是直接copy到你的结构里的。
DataTypeT data;
memcpy(&data, signal_data, sizeof(DataTypeT));
【 在 webhost 的大作中提到: 】
: 他的意思可能是,内存该咋分配还是咋分配,放个结构体,让用的人知道应该怎么cast。
: 他的出发点也是有道理的,但是这种情况应该用指针数组。
--
FROM 193.15.240.*
最终折中了一下达成了一致,搞了个这样的结构体:
typedef struct local_radioCap
{
int sigNo;
int portNum;
union {
portCapT portCap[1];
char data[MAX_LEN];
};
} local_radioCapT;
--
FROM 193.15.240.*
我其实好与坏都无所谓,关键是这个完全是对与错的问题了,按他那样做完全超出了我的底线。我同事可不是5年以下的工作经验了,跟我一样,也是10多年的工作经验了,还负责公司的招聘面试。他还举例子说,把这个问题拿去面试十几年经验的人,人家照样用index去访问,不知道用偏移来访问,感觉像是用数组访问的人才是错了,而他那个结构自带动态属性一样。
最后搞了这个折中的方案已经很不错了,领导都不懂技术,同事以我们只会从技术考虑问题,不知道从项目风险来考虑给领导吹风,再加上都是同事,每天吃饭都一起的,也不能搞僵了。
【 在 xunery 的大作中提到: 】
: 这样的问题真不该有争论,就是很多人连正确与错误,好与坏都分不清,那就需要一个强势的领导保证代码质量。首先,你的写法正确,你应该有这样的自信,代码的情况并不复杂,多读读高质量代码,通常的处理手法就能掌握了。5年经验以下的程序员特别容易有奇奇怪怪的想法还觉得自己无比正确,不要浪费时间试图说服他们,他们奇怪的想法多得多,浪费时间。你同事的那种写法就是错误的,不是谁更优。不过是用解析的错误弥补定义时的错误,看起来可以运行。
--
FROM 183.221.16.*
主要是你没明白我们的背景,我们是图形化的编程语言,接收信号用C语言的语法来描述就是用一个静态结构把原始的信号保存下来,而且是内存直接拷贝。所以我们要为每一个信号适配一个对应的图形化的结构体,对于静态信号,直接原封不动的照着抄就行了,一一对应,但是对于这种双层动态的信号就没法一一对应了,只能搞个buffer存起来。
【 在 slowaction 的大作中提到: 】
: 用maxlen的buf保存变长数据是错误的
: 不保存实际数据长度也是错误的
: 这属于根本没理解变长数据结构的用法
: ...................
--
FROM 183.221.16.*
能够存储数据,然后按照原始的结构解析数据就行了。
--
FROM 183.221.16.*