我想在全局标头中将引脚定义声明为一条简单的行,例如:
#define STATUS_LED B,7
Run Code Online (Sandbox Code Playgroud)
然后,我想将此引脚定义传递给以上功能:
CMBset_out(STATUS_LED);
Run Code Online (Sandbox Code Playgroud)
我不知道该如何处理-MY_PIN格式正确,可以在预编译阶段替换。
#define CMBsbi(port, pin) (PORT##port) |= (1<<pin)
#define CMBset_out(port,pin) (DDR##port) |= (1<<pin)
// define pins
#define STATUS_LED B,7
Run Code Online (Sandbox Code Playgroud)
Then, I want to pass this pin definition to function above (hw_init_states() is declared in the same header file called from main C file):
// runtime initialization
void hw_init_states(){
#ifdef STATUS_LED
CMBset_out(STATUS_LED);
#endif
}
Run Code Online (Sandbox Code Playgroud)
But I get a compilation error:
Error 1 macro "CMBset_out" requires 2 arguments, but only 1 given GENET_HW_DEF.h 68 23 Compass …Run Code Online (Sandbox Code Playgroud) 我有一个简单的JSON,其中包含一个包含其他对象等的数组,如下所示:
languagePack:
[
{
'key': 'Username',
'value': 'Benutzername',
'group': 'default'
},
{
'key': 'Password',
'value': 'Passwort',
'group': 'default'
}
]
Run Code Online (Sandbox Code Playgroud)
但是我真正想要的是这样的对象:
languagePack:
{
'Username': 'Benutzername',
'Password': 'Passwort'
}
Run Code Online (Sandbox Code Playgroud)
因此,我想将数组简化为数组甚至对象内部的简单键值对(键是唯一的)。有谁知道如何通过一些很棒的数组函数来减少这种情况?我只为每个对象想出了一个类似的东西,并为属性建立了“手工”对象的属性,但我记得数组中有一些很棒的东西,例如“ reduce”,散布运算符(...),map,一些,等等
我尝试了类似的东西:
var temp = this.languagePack.map(([key, value]) => ({key,value}))
console.log(temp)
Run Code Online (Sandbox Code Playgroud)
但这只会给我一条错误消息 TypeError: Invalid attempt to destructure non-iterable instance
编辑:所有三个答案都工作正常。谢谢。
有人能告诉我在哪里可以找到有关if语句中变量生命周期的一些信息吗?在这段代码中:
if 2 < 3:
a = 3
else:
b = 1
print(a)
Run Code Online (Sandbox Code Playgroud)
它打印变量a。但在我看来,它是if语句的局部变量。在 C infacts 中,如果我a在if语句中创建变量,它会给我一个错误。
我认为这种行为是因为 Python 是一种解释型语言。我对吗?