是我魔怔了吧,这个函数判断条件不是无效的么?要这个 if 干嘛?
** adi_initialize.c source file generated on August 10, 2018 at 10:27:14.
**
** Copyright (C) 2000-2018 Analog Devices Inc., All Rights Reserved.
**
** This file is generated automatically. You should not modify this source file,
** as your changes will be lost if this source file is re-generated.
*/
#include <sys/platform.h>
#include "adi_initialize.h"
extern int32_t adi_initpinmux(void);
int32_t adi_initComponents(void)
{
int32_t result = 0;
if (result == 0) {
result = adi_initpinmux(); /* auto-generated code (order:0) */
}
return result;
}
1
flytsuki 161 天前
有可能 if 之前有一堆代码,然后需求变更删掉了吧
|
2
azenk 161 天前 via Android
这不是工具自动生成的代码么?不奇怪
|
3
UIXX 161 天前
这是一种嵌入式工程中表示默认配置的写法。
对于不同的处理器,这个函数是根据情况来判断执不执行引脚复用初始化,比如在 A 芯片中 if 前面是有形如 result = xxx()的条件判断的,而 B 芯片则不需要。这种写法既满足格式统一,又方便插入调试语句,经常用。 PS. 工具生成的是引脚复用初始化那部分的内容,不是这个函数。 |
4
pigdragon OP 工具要有模板的吧...按照尚未普及人工智能的情况,模板肯定是人出的
|
6
Panic 161 天前
从软件层面看怎么也应该是再调用一个 result = chip_initComponents 的 chip 专用函数把, 这么写怎么看都不合理. 不过考虑到嵌入式也有全栈, 懂硬件的顺带再写个软件..
|
7
Panic 161 天前
你这个可能是 SDK 版本太老了.
https://github.com/analogdevicesinc/runtime-sharc-loader/blob/master/SharcBooter/project/sc589/SharcBooter_Core2/system/adi_initialize.c int32_t adi_initComponents(void) { int32_t result = 0; result = adi_sec_Init(); return result; } |
8
rrfeng 161 天前 via Android
注释写了 auto generated
也不奇怪( |
9
leonshaw 161 天前
|
10
pigdragon OP |
11
thorneLiu 161 天前 via Android
实际跑起来编译器应该都能优化掉这个 if 吧
|
12
CEBBCAT 161 天前 1
@pigdragon #5 比开口更有益的是主动学习。看到是自动生成的代码,去找生成它的软件,找到对应的生成逻辑,看看为什么这样设计,是不是有哪里可以优化,再去提个 PR ,岂不美哉?
(虽然我从没提过) |
13
kk2syc 161 天前
编译器能优化,但是这样写在不同硬件的时候可以很方便调整对应部分(相当于预留)
|
14
koebehshian 161 天前
统一格式 ,如果要调两个函数,第二个就需要 if 判断
|
15
flax5a98aa2 161 天前
自动生成的代码只需要保证逻辑等价效率没有折扣就行了,人手动写代码需要考虑的事情就多了
|
16
xiri 161 天前
我做嵌入式的,一般我们的代码会有大量的宏控制、嵌套以适配不同的芯片方案和机型,如果只看某个产品机型的有效代码(删除未开启宏包裹的代码),应该能找到一堆类似这样的场景。
主要还是为了同时满足多业务需求,让格式尽量统一、保证代码复用吧,说不定这个代码原先也是有宏控制的其他逻辑分支,只不过公开出来去除了不关注的部分。 |