关于剪裁 强符号 弱符号

12 views
Skip to first unread message

guokr321

unread,
Feb 24, 2014, 10:57:56 AM2/24/14
to learning-l...@googlegroups.com
最近一个项目做得想吐血,逻辑很简单,到最后剪裁,那些脑子进了水的老大各种馊主意,代码改过来改过去。
介绍下背景,我们是做网络设备的,大致设备的物理形态有五种A,B,C,D,E,而跑在这五种物理设备上的逻辑结构有四种,
为了剪裁的需要,我最初是这么做的,我不管什么逻辑形态,反正我的 .c最终编到五种物理设备上,我就按物理形态划分文件,函数内再区分逻辑形态。最近一次给审回来说我冗余代码太多,我就给他理论了一番,说我从每种设备看根本没有冗余代码,把5个.c混到一起当然有冗余,为避免冗余我把公共流程放到了一个文件,建立另一个文件xxx_xxx_GetMethod.c放了几个xxx_GetxxMehtod用函数指针来返回具体物理设备上的处理办法,还是不满意,暗示我把五个xxx_xxx_GetMethod.c合并成一个,我说会有链接问题,因为我调了别人的函数,接着暗示我说用这个,
__attribute__((weak)),我说没见过,才疏学浅,真没见过,他给讲了讲,明白是把函数变成了弱符号,因为我调用了别人四个接口,就在自己的文件里造了四个相同的弱符号桩,生生用丑陋的switch case把五个文件合成一个文件。发现,唉倒是能编译通过,但是我看着自己写的那四个只是用来骗编译器不出链接错误的桩,就感觉代码很恶心,因为我的逻辑已经保证那些弱符号根本没机会调到,那些弱符号除了骗过编译器不出链接错误啥也没干。 
 有几个问题请教几位大牛:
                      1.在这种我们的系统会跑到几种不同物理设备形态上的进行剪裁时,难道不是尽量让每种物理设备形态上都有尽量少的冗余,非要很恶心的处理成一个万能解决方案吗?这样看起来没代码冗余,其实是真冗余,而且以后有人问我那四个空函数是干啥的,我无言以对,我只能说就是为了骗骗连接器。
                     2. 我倒能想到__attribute__((weak))真正有用的情形,就是处理策略有两种,一种是默认策略,一种是备选策略,当需要备选策略时就将备选策略作为强符号编进来就把默认策略盖了,我想GCC的大腕们是拿他来干这种正事的,而不是像我这么卑鄙蒙编译器的吧。
                     3.或者我还能想到的是,默认的确是空,就是没有该功能,然后引入强符号增加该功能,剪裁会方便点,不用修改代码。
        小弟才疏学浅,还希望高人能指教
        另外,我在任何c语言书都没看到过__attribute__((weak))这个东东,他是GCC 独有的吗?


weihengsi

unread,
Feb 24, 2014, 11:04:52 AM2/24/14
to learning-linux-c-cpp
遇到这种情况只能说是自认倒霉,有些人自以为是习惯了,希望你坚定自己的思想
至少我从工程实践的角度是支持你原来的方案的


------------------ 原始邮件 ------------------
发件人: "guokr321";<guok...@163.com>;
发送时间: 2014年2月24日(星期一) 晚上11:57
收件人: "learning-linux-c-cpp"<learning-l...@googlegroups.com>;
主题: [learn-linux-c-cpp] 关于剪裁 强符号 弱符号
--
您收到此邮件是因为您订阅了 Google 网上论坛的“Linux C/C++/系统编程 一站式学习”论坛。
要退订此论坛并停止接收此论坛的电子邮件,请发送电子邮件到 learning-linux-c...@googlegroups.com
要查看更多选项,请访问 https://groups.google.com/groups/opt_out。

guokr321

unread,
Feb 26, 2014, 7:29:22 AM2/26/14
to learning-l...@googlegroups.com
谢谢,上千人为一个系统工作时会因为各种不同原因而去争论,平常心处之吧,也习惯了代码改来改去,可能这边团队还不成熟吧!




遇到这种情况只能说是自认倒霉,有些人自以为是习惯了,希望你坚定自己的思想
至少我从工程实践的角度是支持你原来的方案的
要退订此论坛并停止接收此论坛的电子邮件,请发送电子邮件到 learning-linux-c-cpp+unsub...@googlegroups.com
要查看更多选项,请访问 https://groups.google.com/groups/opt_out。

--
您收到此邮件是因为您订阅了 Google 网上论坛的“Linux C/C++/系统编程 一站式学习”论坛。
要退订此论坛并停止接收此论坛的电子邮件,请发送电子邮件到 learning-linux-c-cpp+unsub...@googlegroups.com
要查看更多选项,请访问 https://groups.google.com/groups/opt_out。


weihengsi

unread,
Feb 26, 2014, 7:38:04 AM2/26/14
to learning-linux-c-cpp
我现在也在找工作,要是有工作的机会,也可以推荐一下,呵呵
祝愿你生活的开心


------------------ 原始邮件 ------------------
发件人: "guokr321";<guok...@163.com>;
发送时间: 2014年2月26日(星期三) 晚上8:29
收件人: "learning-linux-c-cpp"<learning-l...@googlegroups.com>;
主题: Re:回复:[learn-linux-c-cpp] 关于剪裁 强符号 弱符号

guokr321

unread,
Feb 27, 2014, 11:18:17 AM2/27/14
to learning-l...@googlegroups.com
最近没见公司招人,年前招过,前两天听说百度招了,不知道哥们有没有去笔试,考试多相似,数据结构与算法,c,unix like的操作系统原理,工作经历。我一共只有不到一年的IT工作经历,共同进步吧! 祝好运




Reply all
Reply to author
Forward
0 new messages